• ActiveMQ集群搭建


    在虚拟机安装centos7,要提前安装好jdk环境

    工作流程:
    ZooKeeper中管理多个Broker节点,根据 Master选举策略让其中一个 Broker选举为Master(只有Master才具备对外提供服务的能力),剩下Brokerslave
    编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。

    一、zookeeper 安装配置

     

    服务端口

    投票端口

    选举端口
    zk1 2181 2887 3887
    zk2 2182 2888 3888
    zk3 2183 2889 3889

    在/Tools/zookeeper下复制3个zookeeper服务,并分别配置它们的文件conf/zoo.cfg:

    zk1.   

       # /home/admin/Tools/zookeeper01   虚拟机zookeeper安装路径

        dataDir=/home/admin/Tools/zookeeper01/data

        dataLogDir=/home/admin/Tools/zookeeper01/log

    #服务端口

    clientPort=2181

    # zk集群之间的通信地址

    server.1=192.168.23.129:2887:3887

    server.2=192.168.23.129:2888:3888

    server.3=192.168.23.129:2889:3889

    ZK2.

    # zookeeper的数据存储和日志存储目录

    dataDir=/home/admin/Tools/zookeeper02/data

    dataLogDir=/home/admin/Tools/zookeeper02/log

    #服务端口

    clientPort=2182

    # zk集群之间的通信地址

    server.1=192.168.23.129:2887:3887

    server.2=192.168.23.129:2888:3888

    server.3=192.168.23.129:2889:3889

    ZK3.   

    dataDir=/home/admin/Tools/zookeeper03/data

    dataLogDir=/home/admin/Tools/zookeeper03/log

    #服务端口

    clientPort=2183

    # zk集群之间的通信地址

    server.1=192.168.23.129:2887:3887

    server.2=192.168.23.129:2888:3888

    server.3=192.168.23.129:2889:3889

     

    依次启动

    zookeeper01/bin/zkServer.sh  start

    zookeeper02/bin/zkServer.sh  start

    zookeeper03/bin/zkServer.sh  start

    查询状态

    zookeeper01/bin/zkServer.sh  status

    返回Leader follower  证明zookeeper 安装成功;

    activeMQ安装配置

    --

    M-S 通讯

    服务端口

    jetty控制台端口

    Mq01

    62626

    61616

    8161

    Mq02

    62627

    61617

    8162

    Mq03

    62628

    61618

    8163

    1. 修改ActiveMQ配置文件conf/activemq.xmlconf/jetty.xml

     注意:配置中brokerName名称必须一致,否则不能集群

    Mq01:

    Activemq.xml 配置

    1). <broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster" dataDirectory="${activemq.data}">

    2).<transportConnectors>

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

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

       </transportConnectors>

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

    <persistenceAdapter>  

        <replicatedLevelDB  

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

          replicas="3"  

          bind="tcp://0.0.0.0:62626"  

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

          zkPath="/activemq/leveldb-stores"  

          hostname="mq-server" />  

    </persistenceAdapter>

     

    hostname="mq-server"  正式环境    mq-server01     mq-server02   mq-server03等等 在etc/hosts中做映射

    <!--

    # 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

    # 更多参考:http://activemq.apache.org/replicated-leveldb-store.html

    -->

    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="8161"/>

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

    </bean>

    Mq02:

    Activemq.xml 配置

    1). <broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster" dataDirectory="${activemq.data}">

    2).<transportConnectors>

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

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

       </transportConnectors>

     

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

    <persistenceAdapter>  

        <replicatedLevelDB  

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

          replicas="3"  

          bind="tcp://0.0.0.0:62627"  

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

          zkPath="/activemq/leveldb-stores"  

          hostname="mq-server"  

          />  

    </persistenceAdapter>

    <!--

    # directory: 存储数据的路径

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

    # bind:当该节点成为master后,它将绑定已配置的地址和端口来为复制协议提供服务。还支持使用动态端口。只需使用tcp://0.0.0.0:0进行配置即可,默认端口为61616。

     

    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>

    同理,修改mq3的配置信息,这里不再重复;

    依次启动activemq服务

    注意,启动前需要修改HOST配置文件,

    修改host

    命令:vi /etc/hosts

    192.168.23.129 mq-server

    测试:

    Ping mq-server  ,验证是否能ping 通;

    然后依次启动

    mq01/bin/activemq start

    mq02/bin/activemq start

    mq03/bin/activemq start

    输入命令 :ps -ef|grep activemq # 检查进程是否运行,即activemq是否启动成功

    三、Client使用

    该zookeeper+activemq的集群Master Slave部署方案,能够提供(3-1)/2的容错率,即3台服务器允许宕机一台,而不影响整个集群的对外提供服务。

    编写代码连接时使用failover策略:

    IConnectionFactory factory = new ConnectionFactory("failover:tcp://192.168.23.129:61616,tcp://192.168.23.129:61617,tcp://192.168.23.129:61618");

  • 相关阅读:
    C++中static_cast, dynamic_cast使用方法
    JavaScript中的Boolean 方法与Number方法
    參数预计:最大似然预计、贝叶斯预计与最大后验预计
    漫谈程序控制流
    怎样使用 RMAN 增量备份恢复 data guard log gap(日志断档)
    Unity3d修炼之路:GUIbutton简单使用,完毕对一个简单对象Cube的移动,旋转
    Python写自己主动化之邮件发送(匿名)
    LintCode
    缓存之 ACache
    Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
  • 原文地址:https://www.cnblogs.com/brain008/p/11387774.html
Copyright © 2020-2023  润新知