集群通用环境整理
集群通用环境整理
1 概述
因为各类集群通用的环境类似,这里抽一个公用的通用环境或依赖安装文档,方便使用。
2 通用系统环境处理
2.1 VM 固定 IP 配置
详情略,使用的是 NAT 方式配置,以下是配置命令。
$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
NM_CONTROLLED="yes"
IPADDR="192.168.37.100"
ONBOOT="yes"
NETMASK="255.255.255.0"
GATEWAY="192.168.37.2"
DNS1="114.114.114.119"
DNS2="114.114.115.119"
# 重启网卡
$ service network restart
linux 网络启动异常,参考:Linux 网络启动异常
2.2 关闭防火墙
$ systemctl stop firewalld.service # 停止 firewall
$ systemctl disable firewalld.service # 禁止 firewall 开机启动
$ firewall-cmd --state # 查看默认防火墙状态(关闭后显示 notrunning,开启后显示 running)
2.3 关闭 SELinux
$ vim /etc/selinux/config
# 找到 SELinux 改为:
SELINUX=disabled
2.4 主机名配置
设置主机名命令如:hostnamectl set-hostname server1
。
3 Java 通用环境处理
3.1 JDK 安装
卸载系统自带 JDK。
$ java -version
$ rpm -qa|grep jdk
$ rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
$ rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
安装 jdk 1.8。
# 设置环境变量:
$ vim /etc/profile
# 在最后面增加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export CLASSPATH=.:$CLASSPTAH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
# 退出保存,执行以下命令使环境变量生效,并验证 JDK 安装是否正确。
$ source /etc/profile # 使环境变量生效
$ java -version # 查看 JDK 是否安装正确
3.2 Zookeeper 集群搭建
以下是 hosts
配置,实际修改时注意修改为真实 IP 配置。
$ vi /etc/hosts
192.168.37.100 server1
192.168.37.101 server2
192.168.37.102 server3
注意 zookeeper 对 java 版本有依赖。
- 3.5.5 要求 jdk8 版本不低于 211
- 3.4.6 jdk1.7 支持
3.2.1 配置、安装 Zookeeper
如无特别说明,下面命令全部节点均需要执行
# 1. 首先创建 Zookeeper 项目目录、存放快照日志、存放事务日志
$ mkdir /opt/zookeeper && mkdir /opt/zookeeper/zkdata && mkdir /opt/zookeeper/zkdatalog
# 2. 解压 Zookeeper
$ tar -zxvf /mnt/hgfs/vmshare/0_dev_common/zookeeper-3.4.6.tar.gz -C /opt/zookeeper
# 3. 配置环境变量
$ vi /etc/profile
export ZOOKEEPER_HOME=/opt/zookeeper/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
$ source /etc/profile
# 4. 修改配置文件,注意修改 hosts 对应配置
$ cd /opt/zookeeper/zookeeper-3.4.6/conf
$ cp zoo_sample.cfg zoo.cfg && vi zoo.cfg
# zk 服务器心跳时间,单位是 ms
tickTime=2000
# 投票选举新 leader 的初始化时间
initLimit=10
# leader 与 follower 心跳检测最大容忍时间,响应超过 syncLimit * tickTime,leader 认为 follower 死掉,从服务器列表中删除 follower
syncLimit=5
# 数据目录,日志目录
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
# zk 对外服务端口,配置 server.A = B:C:D
# A 是一个数字,代表服务器的编号,就是 myid 文件里面的值。
# B 代表服务器的 IP 地址。
# C 表示服务器与集群中的 leader 服务器交换信息的端口。
# D 表示选举时服务器相互通信的端口。
clientPort=2181
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
# 5. 创建 myid 文件
# server1
echo "1" > /opt/zookeeper/zkdata/myid
# server2
echo "2" > /opt/zookeeper/zkdata/myid
# server3
echo "3" > /opt/zookeeper/zkdata/myid
# 6. 配置旧的 zookeeper 快照和日志文件
# 有 4 种方式
# 1) 定时脚本
# 2) 使用 ZK 的工具类 PurgeTxnLog,它的实现了一种简单的历史文件清理策略,可以在这里看一下他的使用方法 http://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html
# 3) 对于上面这个执行,ZK 自己已经写好了脚本,在 bin/zkCleanup.sh 中,所以直接使用这个脚本也是可以执行清理工作的。
# 4) 从 3.4.0 开始,zookeeper 提供了自动清理 snapshot 和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这# 两个参数都是在 zoo.cfg 中配置的:
# autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个 1 或更大的整数,默认是 0,表示不开启自己清理功能。
# autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留 3 个。
# 推荐使用第一种方法,对于运维人员来说,将日志清理工作独立出来,便于统一管理也更可控。毕竟 zk 自带的一些工具并不怎么给力。
3.2.2 启动 Zookeeper 服务并查看
- 启动 3 台 zookeeper 服务:
zkServer.sh start
。 - 检查服务器状态:
zkServer.sh status
。 - 可以用“jps”查看 zk 的进程,这个是 zk 的整个工程的 main。
$ jps
20348 Jps
4233 QuorumPeerMain
3.2.3 Zookeeper 常用命令
$ zkServer.sh start
$ zkServer.sh restart
$ zkServer.sh status
$ zkServer.sh stop
$ zkServer.sh start-foreground # 以打印日志方式启动