当前位置: 首页 > news >正文

通过网站做国际贸易的成本淘宝做网站为什么那么便宜

通过网站做国际贸易的成本,淘宝做网站为什么那么便宜,用电脑做网站服务器,北京工地网站建设单点配置 ZooKeeper在启动的时候,默认会读取/conf/zoo.cfg配置文件,该文件缺失会报错。因此,我们需要在将容器/conf/挂载出来,在制定的目录下,添加zoo.cfg文件。 zoo.cfg logback.xml 配置文件的信息可以从二进制包…

单点配置

ZooKeeper在启动的时候,默认会读取/conf/zoo.cfg配置文件,该文件缺失会报错。因此,我们需要在将容器/conf/挂载出来,在制定的目录下,添加zoo.cfg文件。

  • zoo.cfg

  • logback.xml

配置文件的信息可以从二进制包的conf文件中获取 ZooKeeper的github地址

/conf/zoo.cfg配置文件

#基本时间单位
tickTime=2000#存储数据的目录
dataDir=/data#存储日志的目录
dataLogDir=/datalog #是否以独立模式运行,如果是集群模式,则改为false
standaloneEnabled=true#客户端端口,用户连接zookeeper服务
clientPort=2181

logback.xml日志文件,顺带将输出日志设置了,不设置的话,会采用默认的日志等级

<configuration><property name="zookeeper.console.threshold" value="INFO" /><property name="zookeeper.log.dir" value="." /><property name="zookeeper.log.file" value="zookeeper.log" /><property name="zookeeper.log.threshold" value="WARN" /><property name="zookeeper.log.maxfilesize" value="256MB" /><property name="zookeeper.log.maxbackupindex" value="20" /><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n</pattern></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>${zookeeper.console.threshold}</level></filter></appender><root level="WARN"><appender-ref ref="CONSOLE" /></root>
</configuration>
docker run -d \--name zookeeper \-v /opt/zookeeperconf/zookeeper1/:/conf/ \zookeeper:3.9.3

之后就可以正常启动了。

我们进入到容器中,验证启动的ZooKeeper是否可以正常使用

# 进入容器内部,使用bash命令行
docker exec -it zookeeper1 /bin/bash# 通过2181端口,连接ZooKeeper服务
bin/zkCli.sh -server 127.0.0.1:2181#创建/zk_test目录,并绑定mydata值
create /zk_test mydata#获取zk_test的绑定值,另外两个ls是列出该目录下,所有的值
get zk_test

集群配置

节点数量说明:

建议配置奇数节点3、5、7、9。原因如下:

ZooKeeper集群模式,只有在超过半数节点可用的情况下,才会对外提供服务;

  • 3个节点,允许宕机1个

  • 5个节点,允许宕机2个

  • 7个节点,允许宕机3个

  • 8个节点,也是允许宕机3个,所以配置奇数个,性价比高。

配置文件说明:

logback.xml文件可以共享一个,但是zoo.cgf需要配置不同的文件,因为当server-list列表中的节点是自己的时候,会监听该地址。当节点是别人的时候,去向该地址发起请求,建立连接。所以,zoo.cfg需要是不同的文件。如何判断是否是自己的地址:server.x中的x isEqual ZOO_MY_ID。

搭建步骤:

1.启动多个节点

这里,我们启动三个节点。先将单机模式的配置文件复制三份,并按照下方docker命令将容器依次启动。注意,如果我们进行集群模式的搭建,必须在环境变量中传入ZOO_MY_ID,该值用作节点的编号。【先启动单机,获取每一个节点的IP通信地址,之后再进行配置文件的修改,搭建集群。】

# 节点1,节点与ZOO_MY_ID相对应
docker run -d \--name zookeeper1 \-v /opt/zookeeperconf/zookeeper1/:/conf/ \-e ZOO_MY_ID=1 \zookeeper:3.9.3docker run -d \--name zookeeper2 \-v /opt/zookeeperconf/zookeeper2/:/conf/ \-e ZOO_MY_ID=2 \zookeeper:3.9.3docker run -d \--name zookeeper3 \-v /opt/zookeeperconf/zookeeper3/:/conf/ \-e ZOO_MY_ID=3 \zookeeper:3.9.3

2.查看节点的IP地址

由于Docker中网络模式有多种类型,这里建议,初次搭建集群的同学,直接使用容器本身生成的IP地址。这一步的目的是为了确保zk节点之间能够互相进行通信。熟练了之后,我们可以把他们放到同一个网络下,使用别名进行通信。

docker inspect <ContainerName>

我的三个容器的IPAddress分别为172.17.0.2、172.17.0.3、172.17.0.4。

3.改写配置文件,重启所有节点

接下来进行配置文件的更改,如果启动容器的ZOO_MY_ID等于下方的server.x中的X,将其地址更改为0.0.0.0,表示监听该地址。

# 节点1 ,myid=1
tickTime=2000
dataDir=/data
clientPort=2181
initLimit=5
syncLimit=2
standaloneEnabled=false
server.1=0.0.0.0:2888:3888
server.2=172.17.0.3:2888:3888
server.3=172.17.0.4:2888:3888# 节点2 ,myid=2
tickTime=2000
dataDir=/data
clientPort=2181
initLimit=5
syncLimit=2
standaloneEnabled=false
server.1=172.17.0.2:2888:3888
server.2=0.0.0.0:2888:3888
server.3=172.17.0.4:2888:3888# 节点3 ,myid=3
tickTime=2000
dataDir=/data
clientPort=2181
initLimit=5
syncLimit=2
standaloneEnabled=false
server.1=172.17.0.2:2888:3888
server.2=172.17.0.3:2888:3888
server.3=0.0.0.0:2888:3888

 配置文件修改完成之后,我们依次进行集群的重启即可。

docker restart zookeeper1

重启之后,我们查看日志,可以会看到节点1和节点2报java.net.ConnectException: Connection refused的错误信息,这是非常正常的。具体原因看下方节点之间通信错误

4.验证集群模式是否配置成功

进行其中一个容器,执行bin/zkServer.sh status,会看到以下信息,Mode:表示该节点在集群中的角色。

我们也可以随机进入一个节点,写入一条信息,看看其他节点能不能同步该信息。

搭建集群时常见的错误信息:

1.Cannot assign requested address

错误信息:无法分配、注册,请求的地址。

解决方法:将节点自身的zoo.cfg的IP地址更改为0.0.0.0即可;

2024-11-04 09:41:20,659 [myid:] - ERROR [ListenerHandler-zookeeper01/10.43.187.245:3888:o.a.z.s.q.QuorumCnxManager$Listener$ListenerHandler@1099] - Exception while listening to address zookeeper01/10.43.187.245:3888
java.net.BindException: Cannot assign requested addressat java.base/sun.nio.ch.Net.bind0(Native Method)at java.base/sun.nio.ch.Net.bind(Unknown Source)at java.base/sun.nio.ch.Net.bind(Unknown Source)at java.base/sun.nio.ch.NioSocketImpl.bind(Unknown Source)at java.base/java.net.ServerSocket.bind(Unknown Source)at java.base/java.net.ServerSocket.bind(Unknown Source)at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.createNewServerSocket(QuorumCnxManager.java:1141)at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.acceptConnections(QuorumCnxManager.java:1070)at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.run(QuorumCnxManager.java:1039)at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)at java.base/java.util.concurrent.FutureTask.run(Unknown Source)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.base/java.lang.Thread.run(Unknown Source)
Connection refused

错误信息:向其他节点发起建立连接的请求,被拒绝了

解决方法:

        首先,说明一下,在集群中所有节点没有全部启动的情况下,这种报错是正常的,因为我们的节点没有全部启动,所以自然也就没有办法建立连接了,这种情况下,启动所有的节点,自然就不会报错了。还有一种原因,就是配置文件错误,最大的可能性是IP地址配置错误,导致节点之间一直没有办法进行通信。可以试试在报错的容器内部能不能ping无法建立连接的IP地址

2024-11-04 09:28:03,754 [myid:] - WARN  [QuorumConnectionThread-[myid=1]-3:o.a.z.s.q.QuorumCnxManager@401] - Cannot open channel to 2 at election address /10.43.128.163:3888
java.net.ConnectException: Connection refusedat java.base/sun.nio.ch.Net.pollConnect(Native Method)at java.base/sun.nio.ch.Net.pollConnectNow(Unknown Source)at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source)at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)at java.base/java.net.SocksSocketImpl.connect(Unknown Source)at java.base/java.net.Socket.connect(Unknown Source)at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:384)at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:458)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.base/java.lang.Thread.run(Unknown Source)

 主要参考资料:


ZooKeeper官方教程

DockerHub:ZooKeeper

http://www.yayakq.cn/news/365230/

相关文章:

  • 竞拍网站模板如何开展网络推广
  • 视频网站内容规划贵金属网站源码
  • 微博网站认证 备案名称wordpress有什么数据库引擎
  • 网站建设中应注意哪些问题短网址生成地址
  • 网站设计轮播图需要吗wordpress设置瀑布流
  • 网站建设类的职位专业的网站搭建多少钱
  • 视频广告网站安徽省驻房城乡建设官方网站
  • 合肥公司建站模板做邀请函用哪个网站好呢
  • 怎样做家普网站做同性恋的珠宝网站
  • 南通网站建设外包广东省建设监理协会网站 首页
  • 淘宝网站那个做的自己怎么做电商
  • 网站开发工具与使用平台软件系统设计
  • 强化门户网站建设logo设计免费设计
  • 网站免费推广平台有哪些上海久久玖建筑
  • 网站关键词的写法logo网站设计图片
  • 柳州电商网站建设网站设计做哪些准备
  • 做单页网站的软件wordpress展现备案号
  • 做网站用什么工具好邢台专业网站建设价格
  • 免费建设展示网站好听顺口的装修公司名字
  • 北京网站开发品牌临海市城乡建设规划局网站
  • 安丘市建设局官方网站网站备案 邮寄资料
  • 百度脑图网站建设流程图档案馆建设网站
  • 论坛网站开发的目的和意义建设工程项目报建网站
  • 品牌网站制作选哪家可以做装修效果图的网站
  • 网站建设it开发app的网站
  • 公司建设网站的优势个人怎么注册公司需要多少钱
  • 用flash做的ppt模板下载网站icp备案域名购买
  • 怎么自己做网站免费的做网站需要知道的简单代码
  • 德州网站建设德州长沙招聘信息最新招聘
  • 网站开发前端和后端wordpress自动存图