基于Zookeeper的过半选举机制,集群节点为奇数,以3个节点为例
准备三台服务器,ip分别是:
192.168.126.128 192.168.126.129 192.168.126.130
1、下载 zookeeper包 apache-zookeeper-3.5.5-bin.tar.gz,拷贝至每台服务器的自建目录 /opt/zookeeper/
下
2、解压 apache-zookeeper-3.5.5-bin.tar.gz
3、设置环境变量
vi /etc/profile ... export ZOOKEEPER_HOME=/opt/zookeeper/apache-zookeeper-3.5.5-bin export PATH=$PATH:$ZOOKEEPER/bin #运行source命令让当前设置立即生效 source /etc/profile #可以用echo命令查看当前PATH,看是不是和预期一样 echo $PATH
引申思考一下,profile 与 bashrc 的区别
4、修改 zookeeper配置
# 进入zookeeper 目录 cd /opt/zookeeper/apache-zookeeper-3.5.5-bin # 进入conf文件夹,有一个zoo_sample.cfg cd conf # 复制一份名为zoo.cfg,因为zookeeper服务端启动时候会根据这个名字来加载 cp zoo_sample.cfg zoo.cfg # 在zoo.cfg里面配置集群的信息 vi zoo.cfg # 在zoo.cfg末端加入下面的配置 dataDir=/opt/zookeeper/apache-zookeeper-3.5.5-bin/data dataLogDir=/opt/zookeeper/apache-zookeeper-3.5.5-bin/logs server.1=192.168.126.128:2888:3888 server.2=192.168.126.129:2888:3888 server.3=192.168.126.130:2888:3888 # 在zoo.cfg里dataDir指定的文件夹下,创建myid文件,文件内容为server后面的一个数字 192.168.126.128的myid文件内容为1 192.168.126.129的myid文件内容为2 192.168.126.130的myid文件内容为3
5、启动 Zookeeper
# 进入 /opt/zookeeper/apache-zookeeper-3.5.5-bin/bin 目录下,启动服务
# zkServer.sh 需要传一个参数,有这些可以选 {start|start-foreground|stop|restart|status|print-cmd}
# 我们先用start-foreground,可以在命令行看到启动的日志信息
sh zkServer.sh start
6、查看服务状态
sh zkServer.sh status
遇到问题:
#网络上的解释是说需要关闭防火墙 #可以通过`systemctl status firewalld.service`查看当前防火墙的状态 #关闭防火漆的命名 systemctl stop firewalld.service # 可能是未开放相关端口,查询 2888 和3888 端口是否开放 firewall-cmd --query-port=2888/tcp firewall-cmd --query-port=3888/tcp #如果为no,则可以通过将 2888和3888 端口加到开放端口 firewall-cmd --add-port=2888/tcp --permanent firewall-cmd --add-port=3888/tcp --permanent #并重载入添加的端口: firewall-cmd --reload #再次查询端口开放情况,确定2888和3888开放 firewall-cmd --query-port=2888/tcp firewall-cmd --query-port=3888/tcp
再次查看 zookeeper 的状态
[root@localhost bin]# zkServer.sh status /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower 或者是 [root@localhost init.d]# zkServer.sh status /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: leader
看到上面的信息表示zk集群配置成功了。
7、常用命令
# 启动 zk 服务 sh zkServer.sh start # 停止 zk 服务 sh zkServer.sh stop # 查看 zk 服务状态 sh zkServer.sh status # 重启 zk 服务 sh zkServer.sh restart # 客户端连接 zk 服务 sh zkCli.sh -timeout 0 -r -server ip:port
http://dubbo.apache.org/zh-cn/docs/admin/install/zookeeper.html