使用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
Category Archives: Linux
JVM进程性能监控工具
1. jps — Java process state, 针对JVM进程的PS命令
相关参数:
-v
显示启动时给定的JVM参数
-q
jps默认只带着类的短名称,如果指定-q则只显示pid
-l
显示完整类名
-m
显示传递给main主函数的参数,例如:
1 2 3 |
# jps -ml 12812 com.cloudera.cmon.firehose.Main --pipeline-type HOST_MONITORING --mgmt-home /usr/share/cmf 12705 com.cloudera.cmon.firehose.Main --pipeline-type SERVICE_MONITORING --mgmt-home /usr/share/cmf |
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
HDFS ACL操作实战
HDFS的文件ACL(Access Control Lists),类似于POSIX ACL(Linux使用ACL来管理文件权限)。
首先参数上要开启基本权限和访问控制列表功能,在CDH 5.2中,默认的参数dfs.namenode.acls.enabled
为false。
1 2 3 4 5 6 7 8 |
<property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.acls.enabled</name> <value>true</value> </property> |
一个访问控制列表(ACL)是一组ACL词目(entries)的集合,每个ACL词目会指定一个用户/组,并赋予读/写/执行上等权限。例如:
1 2 3 4 5 6 |
user::rw- user:bruce:rwx #effective:r-- group::r-x #effective:r-- group:sales:rwx #effective:r-- mask::r-- other::r-- |
这里面,没有命名的用户/组即该文件的基本所属用户/组。每一个ACL都有一个掩码(mask),如果用户不提供掩码,那么该掩码会自动根据所有ACL条目的并集来获得(属主除外)。在该文件上运行chmod会改变掩码的权限。由于掩码用于过滤,这有效地限制了权限的扩展ACL条目,而不是仅仅改变组条目,并可能丢失的其他扩展ACL条目。 Continue reading
Linux下R和package编译安装
R语言在Linux下安装较为麻烦,在online可以直接通过epel来安装,而离线的情况下需要通过编译来安装。而package也不能通过install.packages()通过CRAN在线安装。下面简单介绍一下编译安装的方式 Continue reading
限定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
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
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设置。
1 |
PS1='\n \[\e[0;32m\]----- \[\e[1;33m\]\u\[\e[m\]@\H \[\e[1;34m\]\w\[\e[m\] \[\e[1;35m\]last:\[\e[4;35m\]`echo $?`\[\e[0;32m\] -----\n\[\e[0;31m\]\$ \[\e[m\]\[\e[1;36m\]' |
^^
编译spark-1.0.1源代码
截至到当前为止,spark最新版本为1.0.1。本文测试环境的操作系统是CentOS 7.0 x86_64,jdk为1.7.0_51。编译spark和编译hadoop类似,是一个很简单的过程。
1. 下载spark源代码
1 |
wget http://d3kbcqa49mib13.cloudfront.net/spark-1.0.1.tgz |
2. 安装maven或sbt
(1). java-devel是必须要安装的包
1 |
yum -y install java-devel |
(2). 安装maven
1 |
yum -y install maven |
检查maven
1 2 3 4 5 6 7 |
# mvn -v Apache Maven 3.0.5 (Red Hat 3.0.5-16) Maven home: /usr/share/maven Java version: 1.7.0_55, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.55-2.4.7.2.el7_0.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-123.4.2.el7.x86_64", arch: "amd64", family: "unix" |
使用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