分布式环境

分布式环境

zk

 

服务器1: 172.18.8.40 端口:2181 2881 3881

服务器1: 172.18.8.41 端口:2182 2882 3882

服务器1: 172.18.8.42 端口:2183 2883 3883

Ubuntu

 

  1. 修改/etc/hosts 文件,添加ip与主机映射

172.18.8.40 dev-imp840-v-o

172.18.8.41 dev-imp841-v-o

172.18.8.42 dev-imp842-v-o

 

  1. 下载

cd /usr/local/src

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

mv zookeeper-3.4.8 ../zookeeper

 

  1. 配置

cd /usr/local/zookeeper

mkdir data

mkdir logs

cd conf

cp zoo_sample.cfg zoo.cfg

 

172.18.8.40

vi zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

# 端口 2181

clientPort=2181

server.1=172.18.8.40:2881:3881

server.2=172.18.8.41:2882:3882

server.3=172.18.8.42:2883:3883

 

 

172.18.8.41

vi zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

# 端口 2182

clientPort=2182

server.1=172.18.8.40:2881:3881

server.2=172.18.8.41:2882:3882

server.3=172.18.8.42:2883:3883

 

172.18.8.42

vi zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

# 端口 2183

clientPort=2183 

server.1=172.18.8.40:2881:3881

server.2=172.18.8.41:2882:3882

server.3=172.18.8.42:2883:3883

 

  1. myid文件 

172.18.8.40

echo 1 > /usr/local/zookeeper/data/myid

172.18.8.41

echo 2 > /usr/local/zookeeper/data/myid

172.18.8.42

echo 3 > /usr/local/zookeeper/data/myid

 

  1. 启动

/usr/local/zookeeper/bin/zkServer.sh start

 

  1. 检查:

/usr/local/zookeeper/bin/zkServer.sh status

 

  1. 作为启动服务

在/etc/init.d/ 下建zk文件

vi zk

#/bin/sh

/usr/local/zookeeper/bin/zkServer.sh start

 

修改属性

chmod +x zk

 

activeMQ

规划

 

服务器1: 172.18.8.40 集群端口 62621 消息端口 51511 控制台端口8161

服务器1: 172.18.8.41 集群端口 62622 消息端口 51512 控制台端口8162

服务器1: 172.18.8.42 集群端口 62623 消息端口 51513 控制台端口8163

 

安装目录

/usr/local/activemq

 

  1. 下载 wget http://apache.fayea.com/activemq/5.14.0/              
  2. 解压:

tar zxvf apache-activemq-5.14.0-bin.tar.gz  

mv apache-activemq-5.14.0 /usr/local/activemq

  1. 配置

cd /usr/local/activemq/conf

控制台端口配置

vi jetty.xml

找到 8161 相应修改成 8161 8162 8163

172.18.8.40 不变,为 8161

172.18.8.41 修改成 8162

172.18.8.42 修改成 8163

集群配置:

修改activemq.xml中的持久化适配器,修改bind, zkaddress, hostname和zkPath, 每个activemq中BrokerName必须相同,否则不能加入集群

 

修改持久化:

40

<persistenceAdapter> 

<replicatedLevelDB 

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

replicas="3" 

bind="tcp://0.0.0.0:62621" 

zkAddress="172.18.8.40:2181,172.18.8.41:2182,172.18.8.42:2183" 

hostname="dev-imp840-v-o" 

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

</persistenceAdapter>

 

41:

<persistenceAdapter> 

<replicatedLevelDB 

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

replicas="3" 

bind="tcp://0.0.0.0:62622"

zkAddress="172.18.8.40:2181,172.18.8.41:2182,172.18.8.42:2183" 

hostname="dev-imp841-v-o"

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

</persistenceAdapter>

 

42:

<persistenceAdapter> 

<replicatedLevelDB 

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

replicas="3" 

bind="tcp://0.0.0.0:62623"

zkAddress="172.18.8.40:2181,172.18.8.41:2182,172.18.8.42:2183" 

hostname="dev-imp842-v-o"

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

</persistenceAdapter>

 

 

修改消息端口

40:

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

 

41:

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

 

42:

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

 

启动:

/usr/local/activemq/bin/activemq start

 

查看日志:tail -f /usr/local/activemq/data/activemq.log

 

访问主节点控制台:(slave控制台不能访问)

http://172.18.8.40:8161/admin/   默信密码 admin/admin

 

测试:

设置开机启动:

在/etc/init.d/ 下建activemq文件

vi activemq

#/bin/sh

/usr/local/activemq/bin/activemq start

 

 

修改属性

chmod +x activemq

 

测试,任意停掉一个节点,都可以继续工作。

 

 

broke cluster

 

 

 

 

activemq安全

 

连接ActiveMQ默认情况下,没有任何安全机制,也就是说任何人只要知道brokerURL都能连接,这显然不安全,可以在activemq.xml里,找到<broker>节点,紧贴它的地方添加下面这段:

 

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">

 

        <plugins>   

            <simpleAuthenticationPlugin>   

                <users>   

                    <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>   

                </users>   

            </simpleAuthenticationPlugin>   

        </plugins>

...

   </broker>

那么问题来了,这个

activemq.username

activemq.username{activemq.password}的值是在哪里定义的呢?仍然在activemq.xml里找答案,在最开始的地方有一段:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

     <property name="locations">

         <value>file:${activemq.conf}/credentials.properties</value>

     </property>

 </bean>

换句话说,conf/credentials.properties这里保存的就是连接activemq的用户名和密码,启用连接的安全机制后,spring的配置文件要做如下调整:

 <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">

      <property name="connectionFactory">

          <bean class="org.apache.activemq.ActiveMQConnectionFactory">

              <!--broker服务的地址-->

              <property name="brokerURL" value="tcp://localhost:61616"/>

              <!--默认值为1000,如果不需要这么大,可以调小-->

              <property name="maxThreadPoolSize" value="100"/>

              <property name="userName" value="system"/>

              <property name="password" value="manager"/>

         </bean>

     </property>

 </bean>

 

 

 

 

 

 

 

 

 

posted @ 2017-01-04 17:17  jhhu  阅读(204)  评论(0编辑  收藏  举报