Category Archives: Linux

keepalived+MySQL双主实现高可用性

使用MySQL主主复制技术+Keepalived是一种简单、便捷的解决方案,在高可用集群环境中,keepalived使用虚拟VIP,使用Keepalived自带的服务监控功能和自定义脚本来实现MySQL故障时自动切换,非常灵活。如果有一台MySQL服务器死机,或工作出现故障,keepalived将检测到,并将有故障的MySQL服务器从系统中去除。当MySQL服务器工作正常时,则自动将MySQL服务器加入到服务器集群中,无需人工干预。下面环境为debugo01、debugo02两个节点,使用CentOS 6.6系统。MySQL server的版本是Percona Server 5.6.21,已经配置好了两边的MySQL实例。 Continue reading

Posted in Linux, MySQL, Ops.

JVM进程性能监控工具

1. jps — Java process state, 针对JVM进程的PS命令
相关参数:
-v 显示启动时给定的JVM参数
-q jps默认只带着类的短名称,如果指定-q则只显示pid
-l 显示完整类名
-m 显示传递给main主函数的参数,例如:

Continue reading

Posted in Dev, Java|Scala, Linux.

Docker的CPU资源限制

Docker使用Linux cgroup来实现资源的限制(Linux Note – cgroup),对于CPU的限制有两种方法:

1.cpuset

CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是第一个CPU)。如果使用lxc引擎,可以指定--lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满。
Continue reading

Posted in Linux, Ops, Virtualization.

HDFS ACL操作实战

HDFS的文件ACL(Access Control Lists),类似于POSIX ACL(Linux使用ACL来管理文件权限)。
首先参数上要开启基本权限和访问控制列表功能,在CDH 5.2中,默认的参数dfs.namenode.acls.enabled为false。

一个访问控制列表(ACL)是一组ACL词目(entries)的集合,每个ACL词目会指定一个用户/组,并赋予读/写/执行上等权限。例如:

这里面,没有命名的用户/组即该文件的基本所属用户/组。每一个ACL都有一个掩码(mask),如果用户不提供掩码,那么该掩码会自动根据所有ACL条目的并集来获得(属主除外)。在该文件上运行chmod会改变掩码的权限。由于掩码用于过滤,这有效地限制了权限的扩展ACL条目,而不是仅仅改变组条目,并可能丢失的其他扩展ACL条目。 Continue reading

Posted in BigData, Hadoop, Linux, Ops.

Linux下R和package编译安装

R语言在Linux下安装较为麻烦,在online可以直接通过epel来安装,而离线的情况下需要通过编译来安装。而package也不能通过install.packages()通过CRAN在线安装。下面简单介绍一下编译安装的方式 Continue reading

Posted in Linux, Python|R.

限定SSH登录的命令执行

最近需要创建一个用于监控主机性能的帐号,由于是核心的生产服务器,这个帐号登录需要严格限定执行常见的sysstat, top等性能命令,完成后就要退出登录。查了一些资料后了解authorized_keys中的command等一系列选项可以用于限定使用公钥验证登录后只能执行的命令,服务器在完成该脚本额执行后,SSH也会中端和客户端的通信。
authorized_keys中的command选项描述如下:
command=”command”
Specifies that the command is executed whenever this key is used
for authentication. The command supplied by the user (if any) is
ignored. The command is run on a pty if the client requests a
pty; otherwise it is run without a tty. If an 8-bit clean chan-
nel is required, one must not request a pty or should specify
no-pty. A quote may be included in the command by quoting it
with a backslash. This option might be useful to restrict cer-
tain public keys to perform just a specific operation. An exam-
ple might be a key that permits remote backups but nothing else.
Note that the client may specify TCP and/or X11 forwarding unless
they are explicitly prohibited. The command originally supplied
by the client is available in the SSH_ORIGINAL_COMMAND environ-
ment variable. Note that this option applies to shell, command
or subsystem execution.
Continue reading

Posted in Linux, Ops.

Linux Systemd服务管理

systemd(systemd官网)是Linux下的一种init软件, 较好地管理多个系统服务之间的并行启动和依赖,同时达到降低系统开销的效果,最终代替现在常用的System V与BSD风格init程序。新发行的RHEL 7也用systemd来取代了sysV来管理服务。Systemd中对系统的配置有大量改变,例如在Systemd中hostname可以在/etc/hostname中设置,而非rc.conf中的HOSTNAME环境变量等。本文先简单介绍一下systemd下服务的简单配置。 Continue reading

Posted in Linux, Ops.

Linux 多彩提示符设置

今天看到一些大神的环境有非常酷炫的Linux BASH命令提示符,比默认的'[root@localhost ~]# ‘多了不少内容,而且设置了区分度比较大的颜色,避免了对一些误操作行为。我觉得非常有意义,所以配置一份自己PS1变量。

PS(Prompt Sign): 是指命令提示符。Linux中可以通过修改PS1来修改命令提示符的格式的内容,PS1还提供了一些特殊的符号来表示PS1的内容(参考鸟哥私房菜):
\d 日期
\H 完整的主机名称(带上domain)
\h 仅取主机名
\t 显示时间,为 24 小时格式,如: HH:MM:SS
\T 显示时间,12 小时的时间格式
\A 显示时间,24 小时格式, HH:MM
\u 目前使用者的账号名称
\v BASH 的版本信息
\w 当前工作目录完成路径。home目录会以 ~ 取代
\W 利用 basename 取得工作目录名称
\# 下达的第几个指令,相当于一个当前连接的命令计数器
\$ 提示字符,如果是 root 时,提示字符为 # ,普通用户连接就是 $
Bash中不仅可以设置八种不同的颜色, 还可以设置下划线、粗体和背景色。详细信息可以在这个文档中找到:Color Bash Prompt
下面的PS1变量输出了user,host_name.domain_name, pwd, 和上一个进程的exit code,并将该命令提示符单独分割一行。这样太长的路径和主机名也不会影响正常的命令输入。后面如果需要还可以加入更多的内容。该PS1应该在/home/<username>/.bash_profile中被export,不应该取代全局/etc/bashrc中的PS1设置。

效果如下:
cmd_prompt

^^

Posted in Linux.

编译spark-1.0.1源代码

截至到当前为止,spark最新版本为1.0.1。本文测试环境的操作系统是CentOS 7.0 x86_64,jdk为1.7.0_51。编译spark和编译hadoop类似,是一个很简单的过程。

1. 下载spark源代码

2. 安装maven或sbt

(1). java-devel是必须要安装的包

(2). 安装maven

检查maven

Continue reading

Posted in BigData, Linux, Spark.

使用createrepo配置本地ambari/HDP源

企业内部的hadoop平台一般是不可能连接外部网络。所以需要搭建一个本地的yum repository。下面是简单的配置流程,不足之处欢迎拍砖。
1. 配置hdp的源
wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.1-latest/hdp.repo -O /etc/yum.repos.d/hdp.repo
配置ambari源:
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/1.x/updates/1.6.0/ambari.repo -O /etc/yum.repos.d/hdp.repo
Continue reading

Posted in BigData, Linux, Ops.