美文网首页
zookeeper分布式部署activemq配置流程

zookeeper分布式部署activemq配置流程

作者: 400小栈 | 来源:发表于2018-09-29 08:59 被阅读0次

本文介绍伪分布式集群部署方式,实际生产中正常部署也可参考

一、zookeeper安装与配置

1.现在zookeeper,本文引用版本 zookeeper-3.4.12.tar

2.解压缩zookeeper-3.4.12.tar 三份,并重命名为zookeeper-one、 zookeeper-two、 zookeeper-three

```java

2.1 tar -zxvf zookeeper-3.4.12.tar

2.2  mv  zookeeper-3.4.12 zookeeper-one

  mv  zookeeper-3.4.12 zookeeper-two

  mv  zookeeper-3.4.12 zookeeper-three

```

3.对zookeeper-one、 zookeeper-two、 zookeeper-three三个zookeeper服务进行配置,已zookeeper-one为例

3.1  进入conf目录:cd zookeeper-one/conf/ 复制zoo_sample.cfg 为zoo.cfg(cp zoo_sample.cfg zoo.cfg)

3.2 修改zoo.cfg 的配置参数:

# The number of milliseconds of each tick

#心跳间隔时间,zookeeper中使用的基本时间单位,毫秒值。每隔2秒发送一个心跳

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

#leader与客户端连接超时时间。表示5个心跳间隔

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

#Leader与Follower之间的超时时间,表示2个心跳间隔

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

#数据目录

dataDir=/soft/zookeeper/zookeeper-one/data

#日志目录

dataLogDir=/soft/zookeeper/zookeeper-one/logs

# the port at which the clients will connect

#客户端连接端口。多个实例的端口配置不可重复

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#server.NUM=IP:port1:port2  NUM表示本机为第几号服务器;IP为本机ip地址;

#port1为leader与follower通信端口;port2为参与竞选leader的通信端口

#多个实例的端口配置不能重复,如下:

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

3.3  在 zookeeper-one 目录下分别创建data和logs目录

  mkdir logs

  mkdir data

  在data目录下创建文件myid :  vim  data/myid 然后写入对应的服务器编号即server.NUM中的NUM数字,然后保存即可

4. 启动zookeeper

  分别进入三个zookeeper的bin目录执行启动命令:

$ /soft/zookeeper/zookeeper-one/bin/zkServer.sh start # 启动zk1服务

$ /soft/zookeeper/zookeeper-two/bin/zkServer.sh start # 启动zk2服务

$ /soft/zookeeper/zookeeper-three/bin/zkServer.sh start # 启动zk3服务

# 三个服务都启动之后再查看启动状态,否则由于集群内服务无法相互连接会导致无法看到正确状态

$ /soft/zookeeper/zookeeper-one/bin/zkServer.sh status # 查看zk1服务状态

$ /soft/zookeeper/zookeeper-two/bin/zkServer.sh status # 查看zk2服务状态

$ /soft/zookeeper/zookeeper-three/bin/zkServer.sh status # 查看zk3服务状态

集群启动结果如下:

二、ActiveMQ的伪集群配置

1.下载activemq 文件

2.解压缩activemq文件分别到activemq-one、 activemq-two 和activemq-three三个目录中

3.修改三个目录下的conf目录下的activemq.xml文件和jetty.xml文件

如activemq-one目录中confi目录下的文件配置如下:

conf/activemq.xml

<!-- activemq支持5种协议:openwire、amqp、 stomp、mqtt、ws,这里我们只使用openwire协议,注释其它协议 -->

<transportConnectors>

    <!-- node1服务端口使用默认端口61616 -->

    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

    <!--

    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

    <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

    <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

    -->

</transportConnectors>

<!-- 持久化的部分为ZooKeeper集群连接地址--> 

<persistenceAdapter> 

    <replicatedLevelDB 

      directory="${activemq.data}/leveldb" 

      replicas="3" 

      bind="tcp://0.0.0.0:0" 

      zkAddress="localhost:2181,localhost:2182,localhost:2183" 

      zkPath="/opt/activemq/leveldb-stores" 

      hostname="localhost" 

      /> 

</persistenceAdapter>

<!--

directory: 存储数据的路径

replicas:集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】,3台集群那么允许1台宕机, 另外两台要正常运行 

bind:当该节点成为master后,它将绑定已配置的地址和端口来为复制协议提供服务。还支持使用动态端口。只需使用tcp://0.0.0.0:0进行配置即可,默认端口为61616。 zkAddress:ZK的ip和port, 如果是集群,则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)

zkPassword:当连接到ZooKeeper服务器时用的密码,没有密码则不配置。

zkPah:ZK选举信息交换的存贮路径,启动服务后actimvemq会到zookeeper上注册生成此路径 

hostname: ActiveMQ所在主机的IP

-->

/conf/jetty.xml:

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

    <property name="host" value="0.0.0.0"/>

    <!-- 在这里修改端口为8161,默认就是8161 -->

    <property name="port" value="8161"/>

</bean>

activemq-two目录中confi目录下的文件配置如下:

conf/activemq.xml:

<transportConnectors>

    <!-- 服务端口改为61617 -->

    <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

</transportConnectors>

<!-- 持久化的部分为ZooKeeper集群连接地址--> 

<persistenceAdapter> 

    <replicatedLevelDB 

      directory="${activemq.data}/leveldb" 

      replicas="3" 

      bind="tcp://0.0.0.0:0" 

      zkAddress="localhost:2181,localhost:2182,localhost:2183" 

      zkPath="/opt/activemq/leveldb-stores" 

      hostname="localhost" 

      /> 

</persistenceAdapter>

/conf/jetty.xml:

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

    <property name="host" value="0.0.0.0"/>

    <property name="port" value="8162"/> <!-- 在这里修改端口为8162,默认是8161 -->

</bean>

activemq-three目录中confi目录下的文件配置如下:

/opt/activemq/node3/conf/activemq.xml:

<transportConnectors>

    <!-- 服务端口改为61618 -->

    <transportConnector name="openwire" uri="tcp://0.0.0.0:61618?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

</transportConnectors>

<!-- 持久化的部分为ZooKeeper集群连接地址--> 

<persistenceAdapter> 

    <replicatedLevelDB 

      directory="${activemq.data}/leveldb" 

      replicas="3" 

      bind="tcp://0.0.0.0:0" 

      zkAddress="localhost:2181,localhost:2182,localhost:2183" 

      zkPath="/opt/activemq/leveldb-stores" 

      hostname="localhost" 

      /> 

</persistenceAdapter>

/opt/activemq/node3/conf/jetty.xml:

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

    <property name="host" value="0.0.0.0"/>

    <property name="port" value="8163"/> <!-- 在这里修改端口为8163,默认是8161 -->

</bean>

4.启动activemq服务

$ /soft/activemq/activemq-one/bin/activemq start # 启动节点node1服务 stop停止服务

$ /soft/activemq/activemq-two/bin/activemq start # 启动节点node2服务 stop停止服务

$ /soft/activemq/activemq-three/bin/activemq start # 启动节点node3服务 stop停止服务

$ ps -ef|grep activemq # 检查进程是否运行,即activemq是否启动成功

$ netstat -anp|grep 61616 # 查看服务端口61616,监听情况

$ netstat -anp|grep 61617 # 查看服务端口61617,监听情况

$ netstat -anp|grep 61618 # 查看服务端口61618,监听情况

可以通过查看启动日志信息判断启动是否有错:

tail -f /soft/activemq/activemq-one/data/activemq.log

tail -f /soft/activemq/activemq-two/data/activemq.log

tail -f /soft/activemq/activemq-three/data/activemq.log

也可以通过 ip + 端口号 访问对应的activemq管理页面查看activemq服务是否启动成功

注意:

1. 如果通过虚拟做服务,主机无法访问虚拟机中的端口是,首先关闭防火墙,然后开放对应的端口,指令如下:

service iptables stop 关闭防火墙

iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #允许访问22到80端口

iptables -I INPUT -p tcp --dport 8161 -j ACCEPT #允许访问8161端口

iptables -D INPUT -p tcp --dport 80 -j ACCEPT #删除指定(80)端口

iptables -I INPUT -p tcp -s 192.168.1.112 --dport 80 -j ACCEPT  #只允许指定ip访问本机80端口

2. 手动指定虚拟机的IP地址: ifconfig 网卡名 IP netmask 子网掩码

ifconfig eth0 102.168.0.1 netmask 255.255.255.0

2.ActiveMQ参数配置 application.properties 配置

# 单节点配置

#spring.activemq.broker-url=tcp://192.168.0.108:61616

# zk部署多节点部署配置

spring.activemq.broker-url=failover(tcp://192.168.0.108:61616,tcp://192.168.0.108:61617,tcp://192.168.0.108:61618)

spring.activemq.pool.max-connections=50

spring.activemq.in-memory=true

spring.activemq.pool.enabled=false

#spring.activemq.user=admin

#spring.activemq.password=admin

相关文章

网友评论

      本文标题:zookeeper分布式部署activemq配置流程

      本文链接:https://www.haomeiwen.com/subject/dacvoftx.html