zk集群搭建

zk集群在搭建部署的时候,通常选择2n+1奇数台。底层 Paxos 算法支持(过半成功)。

zk部署之前,保证服务器基础环境正常、JDK成功安装。

服务器基础环境

  • IP
  • 主机名
  • hosts映射
  • 防火墙关闭
  • 时间同步
  • ssh免密登录
    • JDK环境

1、虚拟机克隆

  • 前提:是虚拟机处于关闭状态。
  • 分类:链接克隆 、完整克隆
     
链接克隆:表层是互相独立 底层存储是交织在一起;
完整克隆:完全互相独立的两台虚拟机
  • 修改克隆机器属性。
     
完整克隆意味着两台机器一模一样。在局域网网络中,有些属性是决定不能一样的。
比如:IP、MAC、主机名hostname
  • 3台虚拟机硬件分配 16G
     
node1  2*2cpu  4G内存
node2  1*1cpu  2G内存
node3  1*1cpu  2G内存

2、修改IP、主机名

  • 命令修改 临时生效 重启无效
  • 修改底层配置文件 永久生效 重启才能生效。
vim /etc/hostnamenode2.itcast.cn
#修改IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"     #网卡类型 以太网
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"   #ip等信息是如何决定的?  dhcp动态分配、 static|node 手动静态分配
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"        #网卡名称
UUID="74c3b442-480d-4885-9ffd-e9f0087c9cf7"
DEVICE="ens33"
ONBOOT="yes"       #是否开机启动网卡服务
IPADDR="192.168.88.151"  #IP地址
PREFIX="24"   #子网掩码   等效: NETMASK=255.255.255.0
GATEWAY="192.168.88.2"  #网关服务
DNS1="192.168.88.2"     #网关DNS解析
DOMAIN="114.114.114.114" #公网DNS解析  114.114.114.114  谷歌:8.8.8.8  阿里百度DNS
IPV6_PRIVACY="no#修改主机名hostname
node2.itcast.cn

重启linxu系统 reboot


3、hosts映射修改

  • 背景
在网络中,很少直接通过IP访问机器,原因难记。
通常使用主机名或者域名访问。
此时就会涉及到主机名域名和IP之间的解析
  • 实现
    • 本地hosts文件 进行本地查找解析
localhost 127.0.0.1 

寻找DNS服务器 域名解析服务

  • 配置本地hosts文件实现
    • linux上
vim /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.239.151 node1.itcast.cn node1
192.168.239.152 node2.itcast.cn node2
192.168.239.153 node3.itcast.cn node3
  •           windows上
C:\Windows\System32\drivers\etc\hosts192.168.88.151 node1.itcast.cn node1
192.168.88.152 node2.itcast.cn node2
192.168.88.153 node3.itcast.cn node3

4、 防火墙关闭

  • firewalld
#查看防火墙状态
systemctl status firewalld#关闭防火墙
systemctl stop firewalld#关闭防火墙开机自启动
systemctl disable firewalld#centos服务开启关闭命令
centos6:(某些可以在centos7下使用)service 服务名 start|stop|status|restartchkconfig on|off 服务名centos7:	systemctl start|stop|status|restart 服务名systemctl disable|enable 服务名  #开机自启动  关闭自启
  • selinux
vim /etc/selinux/config# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
    • 需要重启生效

5、 集群时间同步

  • 背景:分布式软件主从角色之间通常基于心跳时间差来判断角色工作是否正常。
  • 国家授时中心 北京时间
    • 授时服务器 国家级 企业级 院校级
  • linux上如何同步时间
    • ntp 网络时间协议 实现基于网络授时同步时间。
    • date
查看当前的系统时间 也可以手动指定设置时间 不精准[root@node1 ~]# date
Thu May 20 14:50:30 CST 2021
    • ntpdate
#ntpdate  授时服务器ntpdate ntp5.aliyun.com[root@node1 ~]# ntpdate ntp5.aliyun.com
20 May 14:53:07 ntpdate[2187]: step time server 203.107.6.88 offset -1.354309 sec#企业中运维往往不喜欢ntpdate 原因是这个命令同步时间是立即的。不是平滑过渡的。
    • ntpd软件
通过配置 平滑的和授时服务器进行时间的同步
    • VMware软件可以提高让虚拟机的时间和windows笔记本保持一致。

6、ssh免密登录

  • 背景
#在进行集群操作的时候  需要从一台机器ssh登录到其他机器进行操作 默认情况下需要密码[root@node1 ~]# ssh node2
The authenticity of host 'node2 (192.168.227.152)' can't be established.
ECDSA key fingerprint is SHA256:5d9A04L+QfYuW7X1J44cKNbyUtuwPkhg+//0OfEczHI.
ECDSA key fingerprint is MD5:74:f0:65:22:af:fd:65:af:ff:91:37:83:3f:ef:ac:81.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node2,192.168.227.152' (ECDSA) to the list of known hosts.
root@node2's password: 
Last login: Thu May 20 11:48:37 2021 from 192.168.227.1[root@node2 ~]# exit
logout
Connection to node2 closed.
  • 需求:能否实现免密ssh登录。
    • 技术:SSH方式2:免密登录功能。 原理见课堂画图
  • 实现
#实现node1----->node2#step1
在node1生成公钥私钥
[root@node1 ~]# ssh-keygen  一顿回车 在当前用户的home下生成公钥私钥 隐藏文件[root@node1 .ssh]# pwd
/root/.ssh
[root@node1 .ssh]# ll
total 12
-rw------- 1 root root 1675 May 20 11:59 id_rsa
-rw-r--r-- 1 root root  402 May 20 11:59 id_rsa.pub
-rw-r--r-- 1 root root  183 May 20 11:50 known_hosts#step2
copy公钥给node2
ssh-copy-id node2  
注意第一次需要密码#step3  
[root@node1 .ssh]# ssh node2
Last login: Thu May 20 12:03:30 2021 from node1.itcast.cn
[root@node2 ~]# exit
logout
Connection to node2 closed.
  • 课程要求
#至少打通node1---->node1  node2  node3 这三个免密登录 #至于所有机器之间要不要互相免密登录 看你心情

7、JDK的安装、环境变量配置

  • 简单:解压即可使用 但是通常配置环境变量,以便于在各个路径下之间使用java。
  • 要求:JDK1.8版本
  • 步骤
#上传安装包到/export/server下
jdk-8u241-linux-x64.tar.gz#解压到当前目录
tar zxvf jdk-8u241-linux-x64.tar.gz#删除红色安装包(可选)
rm -rf jdk-8u241-linux-x64.tar.gz#配置环境变量
vim /etc/profile            #G + o  export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#重新价值环境变量文件 让配置生效
source /etc/profile[root@node1 ~]# java -version      
java version "1.8.0_241"
  • 将node1的JDK安装包scp给其他机器
 #scp安装包cd /export/server/scp -r jdk1.8.0_241/ root@node2:$PWD#scp环境变量文件scp /etc/profile node2:/etc/#别忘了 其他机器source哦source /etc/profile

8、zk具体安装部署

  • zk具体安装部署(选择node1安装 scp给其他节点)

安装包

    • zookeeper-3.4.6.tar.gz
    • 上传解压重命名
cd /export/servertar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6/ zookeeper修改配置文件zoo.cfg
#zk默认加载的配置文件是zoo.cfg 因此需要针对模板进行修改。保证名字正确。
cd zookeeper/conf
mv zoo_sample.cfg zoo.cfgvi zoo.cfg#修改
dataDir=/export/data/zkdata
#文件最后添加 2888心跳端口 3888选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

  • 扩展:心跳机制
    • 分布式软件中从角色向主角色进行心跳 heartbeat
    • 目的:报活
  • myid
#在每台机器的dataDir指定的目录下创建一个文件 名字叫做myid
#myid里面的数字就是该台机器上server编号。server.N  N的数字就是编号
[root@node1 conf]# mkdir -p /export/data/zkdata
[root@node1 conf]# echo 1 >/export/data/zkdata/myid把安装包同步到其他节点上
cd /export/server
scp -r zookeeper/ node2:$PWD
scp -r zookeeper/ node3:$PWD
创建其他机器上myid和datadir目录
[root@node2 ~]# mkdir -p /export/data/zkdata
[root@node2 ~]# echo 2 > /export/data/zkdata/myid [root@node3 ~]# mkdir -p /export/data/zkdata
[root@node3 ~]# echo 3 > /export/data/zkdata/myid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 复合聚合:bucket_by_keys、date_histogram 等

在Elasticsearch中,聚合(Aggregation)是一种强大的功能,允许我们对数据进行复杂的分析和总结。其中,复合聚合(Composite Aggregations)是一种特别灵活的聚合方式,它可以将多个聚合类…

014-GeoGebra基础篇-快速解决滑动条的角度无法输入问题

有客户反馈,他的Geogebra一直有个bug,那就是输入角度最大值时总不按照他设定的展示,快被气炸了~ 目录 一、问题复现(1)插入一个滑动条(2)选择Angle(3)输入90,…

【SQL Server高可用性全解】构建永不宕机的数据库解决方案

标题:【SQL Server高可用性全解】构建永不宕机的数据库解决方案 SQL Server作为微软推出的关系型数据库管理系统,广泛应用于企业级应用中。在这些应用中,数据库的高可用性是至关重要的,它确保了数据的持久化存储和连续访问。本文…

华为OD机试c卷(100分)-数组连续和

题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间&#xff08;包括单个正整数&#xff09;, 它们的和大于等于x。 输入描述 第一行两个整数N x&#xff08;0 < N < 100000, 0 < x < 10000000) 第二行有N个正整数&#xff08;每个正整数小于等于100)…

复现centernet时,报错RuntimeError: CUDA error: out of memory

运行 python test.py ctdet --dataset coco --exp_id coco_dla --load_model /root/CenterNet/exp/ctdet/coco_dla/model_last.pth --gpus 0 --test_scales 1 报错下面&#xff1a; RuntimeError: CUDA error: out of memory明明显存是够用的 解决办法&#xff1a; 找到自己…

代码随想录——无重叠区间(Leetcode435)

题目链接 贪心 排序 class Solution {public int eraseOverlapIntervals(int[][] intervals) {int res 0;if(intervals.length 1 || intervals.length 0){return res;}// 按左边界排序Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] …

Protobuf(三):理论学习,简单总结

1. Protocol Buffers概述 Protocol Buffers&#xff08;简称protobuf&#xff09;&#xff0c;是谷歌用于序列化结构化数据的一种语言独立、平台独立且可扩展的机制&#xff0c;类似XML&#xff0c;但比XML更小、更快、更简单protobuf的工作流程如图所示 1.1 protobuf的优点…

【第17章】MyBatis-Plus自动维护DDL

文章目录 前言一、功能概述二、注意事项三、代码示例四、实战1. 准备2. ddl配置类3. 程序启动4. 效果(数据库) 总结 前言 在MyBatis-Plus的3.5.3版本中&#xff0c;引入了一项强大的功能&#xff1a;数据库DDL&#xff08;数据定义语言&#xff09;表结构的自动维护。这一功能…

app一键退出功能---笔记

问题本质包含两个部分 1.一键结束当前所有的activity 2.一建结束当前的app进程 方式一,采用Activity的启动模式 SingleTask 将app入口的activity设置成singleTask模式,在xml中进行配置。 在activity中重写 onNewIntent(). 优点:使用方便简单, 缺点:1.规定了app入口a…

vite+vue3+nginx配置统一公共前缀

方案1&#xff1a;重定向 server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html;}location /music/ {proxy_pass http://127.0.0.1:80/;} }方案2&#xff1a;vitenginx双重配置 在方案1中&#xff0c;我们虽然能够实现 通过 …

告别高查重率,AI降重工具帮你快速过关

高查重率是许多毕业生的困扰。通常&#xff0c;高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法&#xff0c;如修改文本和增添原创内容&#xff0c;虽必要但耗时且成效不一。 鉴于此&#xff0c;应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

Cloudflare 推出一款免费对抗 AI 机器人的可防止抓取数据工具

上市云服务提供商Cloudflare推出了一种新的免费工具&#xff0c;可防止机器人抓取其平台上托管的网站以获取数据以训练AI模型。 一些人工智能供应商&#xff0c;包括谷歌、OpenAI 和苹果&#xff0c;允许网站所有者通过修改他们网站的robots.txt来阻止他们用于数据抓取和模型训…

Hutool构建树结构

引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version> </dependency>测试 SpringBootTest public class HutoolTest {private List<Menu> me…

Word “当前页“ 与 “前一页“ (含部分内容)间有大半页空白,删除空白方法

鼠标光标选中需要向上移的句子&#xff0c;右键点击“段落”&#xff0c;然后在跳出的窗口中按照“换行和分页”中的红色方框内取消勾选后&#xff0c;点击确定即可。

预定义函数和自定义函数

预定义函数 理解&#xff1a;MySQL提供的函数&#xff0c;直接调用即可 注意1&#xff1a;函数使用select调用 注意2&#xff1a;函数必须有返回值 数学类函数 SELECT ABS(-100);# 获取绝对值 SELECT SQRT(9);# 获取平方根 SELECT MOD(10,3);# 获取余数 SELECT POW(3,3);#…

@化工人|人员定位系统如何选择?从了解定位技术开始

提及化工安全管理所面临的主要难题&#xff0c;大家往往会想到”人难管、事难办、责难负“这三难&#xff0c;而每一难都离不开”人“这个主体。因此&#xff0c;在企业日渐实现数字化转型的今天&#xff0c;越来越多的化工企业选择建设以人员定位系统为核心的企业安全生产信息…

实时数仓Hologres OLAP场景核心能力介绍

作者&#xff1a;赵红梅 Hologres PD OLAP典型应用场景与痛点 首先介绍典型的OLAP场景以及在这些场景上的核心痛点&#xff0c;OLAP典型应用场景很多&#xff0c;总结有四类&#xff1a;第一类是BI报表分析类&#xff0c;例如BI报表&#xff0c;实时大屏&#xff0c;数据中台等…

基于Python+Pytest+Playwright的UI自动化测试框架

文章目录 一、框架介绍二、实现功能三、框架目录结构四、依赖库五、安装教程六、如何创建用例1. 修改配置文件 `config.settings.py`2.删除框架中的示例用例数据3. 编写测试用例七、运行自动化测试方式一:使用pipenv管理虚拟环境1. 激活已存在的虚拟环境2. 运行方式二:依赖包…

Linux--V4L2应用程序开发(二)获取数据

一、采集数据流程 申请buffer用来放置摄像头数据 ioctl VIDIOC_REQBUFS&#xff1a;申请buffer&#xff0c;APP可以申请很多个buffer&#xff0c;但是驱动程序不一定能申请到 ioctl VIDIOC_QUERYBUF和mmap&#xff1a;查询buffer信息、映射 如果申请到了N个buffer&#xff0c…