IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 使用Vmware虚拟机搭建zookeeper集群 -> 正文阅读

[游戏开发]使用Vmware虚拟机搭建zookeeper集群

1、安装虚拟机

安装方法可以参考这篇博客
这里安装三台centos7虚拟机,安装完成后效果如下:
在这里插入图片描述
为方便控制,这里将虚拟机网络配置为桥接模式,首先在虚拟机设置里面将网络连接改为桥接模式
在这里插入图片描述
然后进入虚拟机,修改以下/etc/sysconfig/network-scripts/ifcfg-eno33这个文件的内容进行设置(ifcfg-eno33 这个文件名因机器而异,需要根据自己的电脑进行修改):

cd /etc/sysconfig/network-scripts/     #先切换到对应的目录
ls    #查看当前目录下的文件,找到自己的网卡编号

在这里插入图片描述
我这里网卡编号是eno33,对这个文件内容进行修改

vi ifcfg-ens33   #使用vi打开此文件,并修改里面的内容

桥接模式下,将此文件改为如下内容:

TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33  #网卡设备名,与自己机器对应
ONBOOT=yes
IPADDR=192.168.1.120     #此虚拟机的ip地址,自己手动分配,注意不要使用已被其他机器占用的ip地址
NETMASK=255.255.255.0   #子网掩码,根据所在局域网确定
GATEWAY=192.168.1.1   #网关,根据所在局域网确定
DNS1=8.8.8.8

这里的ip地址、子网掩码、网关要根据自己宿主机所在的局域网而定,具体获取方式:打开windows的cmd窗口,输入ipconfig即可得到,如下图所示:
在这里插入图片描述在这里插入图片描述
得到默认网关和子网掩码照抄就行,我这里ip地址的格式为192.168.1.x,x为1-254的数,本机已经是104,为减小冲突的概率,尽量选大点,我这里三台虚拟机就选择了130,131,132。
为方便操作,使用xshell连接这三台虚拟机

2、安装xsync

拥有集群之后,需要让它们开始干活,还得安装一堆软件,再进行一堆配置,一个一个的弄显然不太优雅,而使用xsync可以一键将文件同步到集群的所有节点上。
xsync安装可以参考这篇博客
配置可以参考这篇博客,主要是配置免密登录
简化版配置:
设置集群节点名及对应地址:

vi /etc/hosts    #打开配置文件

# 插入如下内容   ip地址:节点名       此处节点名可以自己修改
192.168.1.130 host001
192.168.1.131 host002
192.168.1.132 host003

vi /bin/xsync   #创建命令文件

文件内容如下:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in host001  host002 host003
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

修改脚本 xsync 具有执行权限

chmod +x xsync

3、下载安装zookeeper

先安装一台机器,然后用xsync同步到其他节点,再分别改下配置就行啦
单机安装zookeeper见这个教程
运行zookeeper需要先安装jdk,安装教程参考这篇博客
下载安装zookeeper

#下载
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz  #解压
mv apache-zookeeper-3.6.3-bin zookeeper-3.6.3 #解压后得文件夹,改个短点的名字

4、配置zookeeper集群

详细配置可以参考这篇博客

#在zookeeper-3.6.3/这个目录下创建zkData文件夹用来保存zk数据
cd zookeeper-3.6.3
mkdir zkData  
# 在zookeeper-3.6.3/zkData 目录下创建一个 myid 的文件
cd zkData
vi myid
#在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)
1
#拷贝配置好的 zookeeper 到其他机器上
cd ../..
xsync zookeeper-3.6.3/
# 修改每台机器中 zkData/myid中的编号

修改配置文件

cd zookeeper-3.6.3/conf  #进入配置文件所在目录
mv zoo_sample.cfg zoo.cfg  # 重命名zoo_sample.cfg为zoo.cfg
#修改配置文件
vi zoo.cfg 

修改的内容如下:

#修改数据存储路径配置
dataDir=/opt/zookeeper/zookeeper-3.6.3/zkData
#增加如下配置
#######################cluster##########################
server.1=host001:2888:3888
server.2=host002:2888:3888
server.3=host003:2888:3888

配置参数解读

server.A=B:C:D

A 是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
B 是这个服务器的地址;
C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

xsync zoo.cfg  #同步 zoo.cfg 配置文件
cd ..  #返回上一级目录,方便后面的操作

5、集群操作

(1)启动前需要关闭防火墙(生产环境需要打开对应端口)

systemctl stop firewalld

(2)分别启动 Zookeeper

bin/zkServer.sh start

(3)分别查看各节点状态

bin/zkServer.sh status

三台机器都启动后,看到的状态如下,有一个leeder,两个folower
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)关闭节点

bin/zkServer.sh stop

6、同步操作

上面的集群一个一个的启动虽然可以,但这也太麻烦了,还很不优雅,可以写一个脚本来一键对所有节点进行操作
vi zk.sh #创建脚本,并写入如下内容

#!/bin/bash
case $1 in
"start"){
	for i in host001 host002 host003
	do
		echo ---------- zookeeper $i 启动 ------------
		ssh  $i  "/opt/zookeeper/zookeeper-3.6.3/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in host001 host002 host003
	do
		echo ---------- zookeeper $i 停止 ------------
		ssh  $i  "/opt/zookeeper/zookeeper-3.6.3/bin/zkServer.sh stop"
	done
};;
"status"){
	for i in host001 host002 host003
	do
		echo ---------- zookeeper $i 状态 ------------
		ssh  $i  "/opt/zookeeper/zookeeper-3.6.3/bin/zkServer.sh status"
	done
};;
esac

执行脚本:

./zk.sh start   #启动集群

./zk.sh status  #查看集群状态

./zk.sh stop   #关闭集群

执行后有可能会报错
在这里插入图片描述JAVA_HOME not found,但已经安装了jdk,此时需要改一下配置,参考这篇博客,在配置中加入JAVA_HOME ,具体操作:

vi zookeeper-3.6.3/bin/zkEnv.sh 

#在文件中添加这一句话
JAVA_HOME=/opt/java8/jdk1.8.0_331/   

在这里插入图片描述
然后同步一下该文件

xsync zookeeper-3.6.3/bin/zkEnv.sh 
xsync zk.sh 

此时再运行./zk.sh status就好啦
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:08:57  更:2022-04-26 12:09:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/17 5:30:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码