dubbo zookeeper 的搭建
zookeeper集群只要有超过一半的节点正常就可以运行,所以集群节点的数量应该为奇数,即:使用2n+1个节点来运行zookeeper集群。下面使用3台机器部署zookeeper节点。
1.安装虚拟机配置静态上网ip
如果配置的DHCP 自动获取网络 则虚拟机在每一次重启的时候 都会改变IP.需要配置静态IP,这样虚拟机的IP就固定了。
1.1 桥接模式之VMware设置:
1.2 桥接模式之虚拟机设置:
1.3 桥接模式之设置静态ip地址
配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网。主机与虚拟机之间,以及各虚拟机之间都可以互访。对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的VMnet0网卡与主机以太网连接,虚拟机间的虚拟网络为VMnet0。这时你的虚拟机就像局域网中的一个独立的物理机一样。虚拟机中的操作系统可以PING通别的主机,反过来别的主机也可以PING虚拟机。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
所以配置之前,我要先看一下物理主机的ip地址:(我这里物理主机采用无线上网卡wifi上网)
1.4 ipconfig 查看物理主机的ip地址(上外网用的那个网卡的ip地址)
1.5 根据物理主机的ip地址,设置linux虚拟机的ip地址:
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #虚拟机网卡名称。 TYPE=Ethernet ONBOOT=yes #开机启用网络配置。 NM_CONTROLLED=yes BOOTPROTO=static #static,静态ip,而不是dhcp,自动获取ip地址。 IPADDR=192.168.1.101 #设置我想用的静态ip地址,要和物理主机在同一网段,但又不能相同。 NETMASK=255.255.255.0 #子网掩码,和物理主机一样就可以了。 GETWAY=192.168.1.1 #和物理主机一样 DNS1=8.8.8.8 #DNS,写谷歌的地址就可以了。 HWADDR=00:0c:29:22:05:4c IPV6INIT=no USERCTL=no
1.6 重启网络服务
service network restart
可以参看 url = https://www.cnblogs.com/jasmine-Jobs/p/5928218.html
2.修改hosts文件
## 修改hosts文件,添加节点的映射
vi /etc/hosts
## hosts的内容如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#zookeeper cluster servers (zookeeper的节点IP映射)
192.168.1.101 server01
192.168.1.105 server02
192.168.1.108 server03
3.解压zookeeper
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
tar zxvf zookeeper-3.4.8.tar.gz
解压zookeeper到目录中,在这次设置中三天机器的zookeeper目录分别为:
- 机器192.168.1.101,目录名是 zookeeper-3.4.8;
- 机器192.168.1.105,目录名是 zookeeper-3.4.8;
- 机器192.168.1.108,目录名是 zookeeper-3.4.8;
-
4 创建data与logs文件夹
- ## 创建data mkdir /usr/local/src/zookeeper/data
- ## 创建logs mkdir /usr/local/src/zookeeper/logs
-
5.修改zoo.cfg配置文件
分别从三台机器zk-node-xx\conf目录,拷贝zoo_sample.cfg文件,并且重命名为zoo.cfg:
## 复制文件 cp zoo_sample.cfg zoo.cfg
-
接着,分别修改这三台机器的zoo.cfg,修改内容如下:
## 192.168.1.101的zoo.cfg内容 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/src/zookeeper/data dataLogDir=/usr/local/src/zookeeper/logs clientPort=2181 server.1=server01:2888:3888 server.2=server02:2888:3888 server.3=server03:2888:3888
其中dataDir与dataLogDir的目录分别对应上面创建的两个文件夹,server.1、server.2、server.3分别对应三台机器,机器192.168.1.101,192.168.1.105,192.168.1.108的端口为2181。
配置文件参数说明:
tickTime=2000
tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。
initLimit=10
initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是10*2000=20秒。
syncLimit=5
syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir=/opt/zk-node-01/data
顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。
clientPort=2181
clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。
server.A=B:C:D
server.1=server01:2888:3888
server.2=server02:2888:3888
server.3=server03:2888:3888
A是一个数字,表示这个是第几号服务器;
B是这个服务器的IP地址(或者是与IP地址做了映射的主机名);
C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的Leader服务器交换信息的端口;
D是在leader挂掉时专门用来进行选举leader所用的端口。
注意:如果是伪集群的配置方式,不同的Zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号。
6.在data目录创建myid文件
在
/usr/local/src/zookeeper/data 目录下创建一个myid文件,三台机器的myid内容分别为1、2和3:
## 创建myid文件
vi myid
## 输入内容
1
7.配置防火墙
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
8.开启zookeeper服务
服务在zookeeper-3.4.8\bin下,有一个zkServer.sh文件,分别对三台机器执行:
## 开启zookeeper服务
zkServer.sh start
## 查看zookeeper状态
zkServer.sh status
10.
9.使用dubbo测试zookeeper集群