在Linux中进行ZooKeeper集群搭建

在公网IP为x.x.x.x、y.y.y.y和z.z.z.z并装有Alibaba Cloud Linux 3.2104 LTS 64位的服务器上进行zookeeper集群搭建,都安装server-jre-8u202-linux-x64和apache-zookeeper-3.9.1-bin。

环境准备(三台服务器都一样)

第一步,下载server-jre-8u202-linux-x64.tar.gz安装包。

到地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz安装包。然后使用WinSCP将安装包上传到/usr/local/src文件夹中。或者也可以使用wget命令下载。

命令:cd /usr/local/src/

wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz

第二步,解压server-jre-8u202-linux-x64.tar.gz安装包。

命令:cd /usr/local/src/

tar -zxvf server-jre-8u202-linux-x64.tar.gz -C /usr/local

第三步,配置环境变量。

配置/etc/profile文件,在文件添加下面的代码:

export JAVA_HOME=/usr/local/jdk1.8.0_202export JRE_HOME=$JAVA_HOME/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

# 刷新profile文件

命令:source /etc/profile

第四步,测试server-jre是否配置成功。

# 查看jdk版本

命令:java -version

若结果显示server-jre的版本,则说明server-jre配置成功。

第五步,关闭防火墙。

为了可以让本地的机器可以通过Web网页访问集群资源,为了防止在运行集群的时候出现集群不可访问的状况,需要关闭防火墙。

命令:systemctl stop firewalld

# 开机时禁用防火墙

命令:systemctl disable firewalld

第六步,各自修改主机名,配置IP地址映射。

命令:hostnamectl set-hostname node1

hostnamectl set-hostname node2

hostnamectl set-hostname node3

对三台主机的IP地址进行映射,可以方便后续的配置,同时也方便对集群进行通信,三台机器同样操作。

在/etc/hosts文件中加入下面的代码:

x.x.x.x node1y.y.y.y node2z.z.z.z node3

第七步,配置免密登录。

# 在~目录下执行,生成密钥

命令:cd

ssh-keygen -t rsa # 按四下enter

cd /root/.ssh/

cp id_rsa.pub authorized_keys

# 将node1的密钥拷到其他服务器上

ssh-copy-id -i node2

ssh-copy-id -i node3

第八步,集群时间同步。

命令:yum -y install ntpdate

ntpdate ntp4.aliyun.com

ZooKeeper的安装与配置(三台服务器都一样)

第一步,下载安装ZooKeeper。

登录网址:https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz,下载apache-zookeeper-3.9.1-bin,然后通过WinSCP上传到/usr/local/src文件夹。

第二步,解压ZooKeeper安装包。

命令:cd /usr/local/src

tar -xvzf apache-zookeeper-3.9.1-bin.tar.gz -C /usr/local/

mv apache-zookeeper-3.9.1-bin zookeeper-3.9.1

第三步,配置ZooKeeper。

# 将/usr/local/zookeeper-3.9.1/conf中的zoo_sample.cfg改成zoo.cfg

命令:cd /usr/local/zookeeper-3.9.1/conf

mv zoo_sample.cfg zoo.cfg

# 在/usr/local/zookeeper-3.9.1下新建zkData文件夹

命令:cd /usr/local/zookeeper-3.9.1

mkdir zkData

最后对文件zoo.cfg进行编辑,将dataDir的路径换成文件夹zkData的路径,得到下面的代码:

dataDir=/usr/local/zookeeper-3.9.1/zkData

第四步,启动测试。

# 启动服务端

命令:cd /usr/local/zookeeper-3.9.1/bin

./zkServer.sh start

# 查看进程

命令:jps

# 启动客户端

命令:cd /usr/local/zookeeper-3.9.1/bin

./zkCli.sh

第五步,配置环境变量。

在文件/etc/profile中添加下面的代码:

#zookeeperexport ZK_HOME=/usr/local/zookeeper-3.9.1export PATH=$PATH:$ZK_HOME/bin

# 使环境变量生效

命令:source /etc/profile

第六步,对/usr/local/zookeeper-3.9.1/conf/zoo.cfg文件做进一步的修改。

说明:2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口,server后面的数字与后面的myid相对应。

server.1=x.x.x.x:2888:3888server.2=y.y.y.y:2888:3888server.3=z.z.z.z:2888:3888

第七步,进入/usr/local/zookeeper-3.9.1/zkData,修改myid文件,内容要和zoo.cfg中的修改相对应。

ZooKeeper集群测试

# 启动各个服务器的zookeeper

命令:./zkServer.sh start

# 查看当前zookeeper的状态

命令:./zkServer.sh status

若zookeeper正常启动,则可以发现,由于选举机制,不能成功启动第一台服务器node1和第二台服务器node2。

当启动第三台服务器node3时,出现选票超过半数,node3成为了leader,而node1和node2成为了follower。

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

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

相关文章

基于图论的图像分割 python + PyQt5

数据结构大作业,基于图论中的最小生成树的图像分割。一个很古老的算法,精度远远不如深度学习算法,但是对于代码能力是一个很好的锻炼。 课设要求: ( 1 )输入:图像(例如教室场景图&a…

四、Spring IoC实践和应用(三种配置方式总结)

本章概要 三种配置方式总结 XML方式配置总结XML注解方式配置总结完全注解方式配置总结 整合Spring5-Test5搭建测试环境 4.5 三种配置方式总结 4.5.1 XML方式配置总结 所有内容写到xml格式配置文件中声明bean通过<bean标签<bean标签包含基本信息&#xff08;id,class&…

字符串拼接 (90%用例)C卷 (JavaPythonNode.jsC++)

给定M(0<M<=30)个字符 (a-z),从中取出任意字符 (每个字符只能用一次)拼接成长度为N(0<N<=5)的字符串,要求相同的字符不能相邻,计算出给定的字符列表能拼接出多少种满足条件的字符串,输入非法或者无法拼接出满足条件的字符串则返回0。 输入描述 给定的字符列表…

47、激活函数 - sigmoid

今天在看一个比较常见的激活函数,叫作 sigmoid 激活函数,它的数学表达式为: 其中,x 为输入,画出图来看更直观一些。 Sigmoid 函数的图像看起来像一个 S 形曲线,我们先分析一下这个函数的特点。 Sigmoid 函数的输出范围在 (0, 1) 之间,并且不等于0或1。 Sigmoid 很明显是…

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

客户端和驱动程序

今天我们来聊聊数据库领域中经常出现的两个术语&#xff1a;客户端和驱动程序。 客户端和驱动程序 客户端&#xff1a; 通常是指使用数据库服务的应用程序或工具。这可能是一个图形用户界面(GUI)工具、命令行工具、Web应用程序或其他形式的应用程序。客户端负责发起数据库请…

spring 之 事务

1、JdbcTemplate Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 1.1 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency&…

基于SpringBoot的在线互动学习网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的在线互动学习网站,java…

工程类标书制作攻略

工程类标书是工程项目中非常重要的一环&#xff0c;它不仅反映了投标者的技术实力和经验&#xff0c;更是决定项目归属的关键因素。那么&#xff0c;如何制作一份高质量的工程类标书呢&#xff1f; 一、明确招标要求 在制作标书前&#xff0c;首先要仔细阅读招标文件&#xf…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术&#xff0c;包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09…

2024年总结的前端学习路线分享(学习导读)

勤学如春起之苗&#xff0c;不见其增&#xff0c;日有所长 。辍学如磨刀之石&#xff0c;不见其损&#xff0c;日有所亏。 在写上一篇 2023年前端学习路线 的时候&#xff0c;时间还在2023年初停留&#xff0c;而如今不知不觉时间已经悄然来到了2024年&#xff0c;回顾往昔岁月…

三、Mysql安全性操作[用户创建、权限分配]

一、用户 1.创建用户 CREATE USER test1localhost identified BY test1;2.删除用户 DROP USER test2localhost;二、权限分配 1.查询用户权限 SHOW GRANTS FOR test1localhost;2.分配权限 # 分配用户所有权限在for_end_test库的test1表 GRANT ALL PRIVILEGES ON for_end_t…

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1&#xff1a;包名设置为Sources ROOT 起包名的时候&#xff0c;需要在该文件夹上&#xff1a;右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录&#xff0c;就可以了。 再引用就可以了 import common from aoeweb impo…

OCP NVME SSD规范解读-3.NVMe管理命令-part2

NVMe-AD-8&#xff1a;在某些情况下&#xff08;如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除&#xff09;&#xff0c;设备应允许读取已清除的LBAs而不产生错误&#xff0c;并在最后一次清除完成后&#xff0c;对未写入LBAs的读取返回所有零值给主机 NVMe-AD…

面试记录(被问倒的)

快排&#xff0c;设计模式&#xff08;观察者模式 mvc模式 单例模式&#xff09;及其优势&#xff0c;工作遇到的困难&#xff0c;解决过的问题&#xff0c;渲染管线&#xff0c;ui合批&#xff08;动静分离&#xff09;&#xff0c;比较复杂的编辑器扩展&#xff0c;算法&…

鸿蒙开发之android对比开发《基础知识》

基于华为鸿蒙未来可能不再兼容android应用&#xff0c;推出鸿蒙开发系列文档&#xff0c;帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发&#xff1f; ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风…

二叉树题目:根到叶路径上的不足结点

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;根到叶路径上的不足结点 出处&#xff1a;1080. 根到叶路径上的不足结点 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root…

LeetCode——链表

链表 链表类型&#xff1a;单链表&#xff08;只有next指针&#xff09;、双链表&#xff08;pre指针和next指针&#xff09;、循环链表&#xff08;尾节点指向头节点&#xff09; 增、删、改、遍历、翻转、交换 1.设计链表707中等 class LinkedNode {int val;LinkedNode n…

基于SpringBoot的精简博客系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的精简博客系统,java项目…

关键字:throw关键字

在 Java 中&#xff0c;throw关键字用于抛出异常。当程序执行过程中发生意外情况&#xff0c;如错误的输入、资源不足、错误的逻辑等&#xff0c;导致程序无法正常执行下去时&#xff0c;可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例&#xff1a; 抛出异常…