集群通用环境整理

felix.shao2023-04-04

集群通用环境整理

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 网络启动异常open in new window

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  # 以打印日志方式启动
Last Updated 4/15/2025, 9:45:58 PM