No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
pillar
salt
README.md
master
roster

README.md

SaltStack 自动化部署 Zookeeper

SaltStack 自动化部署 Zookeeper。

版本明细

  • 测试通过系统:CentOS 7.5.1804
  • salt-ssh:2018.3.2-1
  • JDK:1.8.0_121
  • Zookeeper:3.4.9

架构介绍

  1. 使用 Salt Grains 进行角色定义,增加灵活性。
  2. 使用 Salt Pillar 进行配置项管理,保证安全性。
  3. 使用 Salt SSH 执行状态,不需要安装Agent,保证通用性。

本项目环境定义说明:

IP地址 主机名 角色
10.100.4.180 salt-master Salt-SSH
10.100.4.181 zk01-test.codegreen.cn Zk01
10.100.4.182 zk02-test.codegreen.cn Zk02
10.100.4.183 zk03-test.codegreen.cn Zk03

架构图: arch

1、系统初始化

  1. 配置主机名
  2. 设置 /etc/hosts 保证主机名能够解析
  3. 关闭 SELinux 和 防火墙

2、设置 Salt SSH 节点到其它所有节点的 SSH 免密码登录

root@salt-master:~ # ssh-keygen -t rsa
root@salt-master:~ # ssh-copy-id root@10.100.4.181
root@salt-master:~ # ssh-copy-id root@10.100.4.182
root@salt-master:~ # ssh-copy-id root@10.100.4.183

3、安装 Salt SSH 并克隆本项目代码

3.1、安装 Salt SSH

注意:老版本的Salt SSH不支持Roster定义Grains,需要2017.7.4以上版本。

root@salt-master:~ # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
root@salt-master:~ # yum install https://mirrors.aliyun.com/saltstack/yum/redhat/salt-repo-latest-2.el7.noarch.rpm 
root@salt-master:~ # sed -i "s/repo.saltstack.com/mirrors.aliyun.com\/saltstack/g" /etc/yum.repos.d/salt-latest.repo
root@salt-master:~ # yum -y install salt-ssh git

3.2、获取本项目代码

获取本项目代码,放置在 /srv 目录

root@salt-master:~ # git clone https://github.com/wangenzhi/salt-zookeeper.git
root@salt-master:~ # cd salt-zookeeper/
root@salt-master:~/salt-zookeeper # mv * /srv/
root@salt-master:/srv # ls
master  pillar  roster  salt
root@salt-master:/srv # /bin/cp /srv/roster /etc/salt/roster 
root@salt-master:/srv # /bin/cp /srv/master /etc/salt/master

3.3、下载二进制文件

可以自行官方下载,为了方便国内用户下载,本项目将所需要的二进制文件放到了百度云盘,下载地址:https://pan.baidu.com/s/1CDR2LeoJ7JCkjT0gZNzFbg

root@salt-master:~ # cd /srv/salt/zookeeper/files/
root@salt-master:/srv/salt/zookeeper/files # ls -l 
总用量 401604
-rw-r--r-- 1 root root 183246769 5月  15 2017 jdk-8u121-linux-x64.tar.gz
-rw-r--r-- 1 root root        23 9月  26 16:46 README.md
-rw-r--r-- 1 root root  22724574 9月   3 2016 zookeeper-3.4.9.tar.gz
-rw-r--r-- 1 root root 205263143 9月  26 16:52 zookeeper.zip

4、配置管理机器以及角色分配

  • myid:用来标识 Zookeeper 节点

注意:如果你使用本项目需要修改以下两处,host,port,port 为 SSH 监听的端口,默认是 22。

root@salt-master:~ # vim /etc/salt/roster 
zookeeper01:
  host: 10.100.4.181
  user: root
  port: 59120
  priv: /root/.ssh/id_rsa
  minion_opts:
    grains:
      myid: 1

zookeeper02:
  host: 10.100.4.182
  user: root
  port: 59120
  priv: /root/.ssh/id_rsa
  minion_opts:
    grains:
      myid: 2

zookeeper03:
  host: 10.100.4.183
  user: root
  port: 59120
  priv: /root/.ssh/id_rsa
  minion_opts:
    grains:
      myid: 3

5、修改配置参数

本项目使用 Salt Pillar 保存配置

设置主机名必须修改,除非你的主机名与本项目相同

root@salt-master:~ # vim /srv/pillar/conf.sls
SERVER1: "server.1=zk01-test.codegreen.cn:2888:3888"
SERVER2: "server.2=zk02-test.codegreen.cn:2888:3888"
SERVER3: "server.3=zk03-test.codegreen.cn:2888:3888"

# 修改 hosts 模板文件(IP地址必须修改,主机名如果相同可不修改)
root@salt-master:~ # cat /srv/salt/zookeeper/templates/hosts.template
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.100.4.181 zk01-test.codegreen.cn
10.100.4.182 zk02-test.codegreen.cn
10.100.4.183 zk03-test.codegreen.cn

5、执行 SlatStack 状态

###5.1、 测试连通性

root@salt-master:~ # salt-ssh '*' test.ping
zookeeper01:
    True
zookeeper03:
    True
zookeeper02:
    True

###5.2、先安装 JDK

root@salt-master:~ # salt-ssh '*' state.sls zookeeper.modules.jdk

由于包比较大,这里执行时间较长,1分钟+,由于 saltstack 无法通过 cmd.run 远程加载环境变量/etc/profile ,所以我们需要手动在所有 zookeeper 节点执行 source /etc/profile 必须执行,否则后面无法启动 ZK 服务。

###5.3、部署 Zookeeper 集群

root@salt-master:~ # salt-ssh '*' state.highstate

执行完成后查看集群节点的状态信息:

root@zk01-test:~ # /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

root@zk02-test:~ # /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

root@zk03-test:~ # /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader