activemq基于共享磁盘的主从搭建

Activemq部署安装

第一步:

1.从官网下载最新安装包,地址:http://activemq.apache.org/download-archives.html,这里用到的是5.9.0版本。

2.安装jdk,这里不再介绍。

3.解压下载的安装包,

tar –zxvf apache-activemq-5.9.0-bin.tar.gz
解压后进入解压目录apache-activemq-5.9.0,运行./bin/activemqstart,便可单机运行。

第二步,集群部署:

再另外一台服务器,ip为:192.168.220.103上也同样执行第一步操作。

Activemq集群部署方式介绍:

Activemq支持多种集群部署和分布式方案:

1.      基于共享存储的主从配置,这里的存储分为共享磁盘和共享数据库。

2.      networks-of-brokers ,详见http://activemq.apache.org/networks-of-brokers.html

3.      基于zookeeper和levelDB的分布式方案,5.9版本新增。

由于我们的业务场景还是比较简单的,主要是要满足mq的高可用性。因此,我重点了解了前两种方式。

第二种方式虽然可以满足服务的高可用性,客户端也可以使用failover的自切机制,但是各个服务都是独立存储数据,其他的broker只是互相作为彼此的远程消费者,如果其中一个broker宕机,那么这个broker上还没有消费的数据将也变得无法可用。

结合上述分析,我们还是采用的第一种分布式方案,主从mq去共享目录中争取锁,先获得锁的mq即为主,从库会每隔10秒尝试重新获得锁,我们采用nfs共享硬盘的方式,并使用了性能较高的SSD硬盘来作为存储媒介,数据库使用activemq默认的kahadb。

主库ip:192.168.220.69

从库ip:192.168.220.103

安装NFS服务

1.在主库上安装nfs服务:

centos 5 :

yum install nfs-utils portmap
centos 6 :
yum install nfs-utils rpcbind

我们的系统环境是centos6,因此需要安装nfs-utils和rpcbind两个包。

安装完成之后,配置/etc/exports文件。

vim /etc/exports;

然后输入:

/data1/activemq/:192.168.220.103(rw,sync,no_root_squash,no_all_squash)

这里需要注意no_root_squash,no_all_squash 这两项配置,意思是说,远程客户端使用共享文件时可以用root和所有用户权限访问,不然远程客户端默认用nfsnobody用户。这样会造成本地activemq启动用户创建的db和lock等文件,另一台activemq由于没有权限导致切换失败。

2. 启动rpcbind服务

service rpcbind start

3. 启动nfs服务

service nfs start

4.把这两个服务设置自启动

chkconfig --level 35 nfs on
chkconfig --level 35 rpcbind on

5.需要注意selinux和iptables等安全设置。

6.在从库192.168.220.103上挂载共享目录:

mount -t nfs192.168.220.69: /data1/activemq /data1/activemq

7.设置从库重启系统时自动挂载:

vim/etc/rc.d/rc.local
加入:mount -t nfs 192.168.220.69: /data1/activemq /data1/activemq
wq保存退出。

配置主从的activemq

1.   修改主库conf下的activemq.xml配置文件

修改如下所示的brokerName和dataDirectory,其中dataDirectory为共享目录的路径。


找到如下配置项,将kahadb的存储路径也改为共享目录。

        
            
        

2.   从库也进行同样的配置,指定刚刚挂载的共享目录路径。

3.   在主从库上分别创建用户mq启动的账号,useradd web passwd web

这里需注意:

查看web用户可创建的进程数

su web

ulimit -u

新版的centOS 创建用户默认的进程数为1024,在高并发情况下会出现用户资源被占满的情况,需调大web用户可创建的进程数.

修改配置文件 /etc/security/limits.d/90-nproc.conf ,调成跟root用户一样即可。

 

上述两部完成之后,并完成的activemq主从集群的搭建。依次启动主从activemq,先启动的broker将优先获得文件锁,升级为主库。

activemq的安全配置

这里分两部分:消息队列的安全配置和管理后台的安全配置。

1.   消息队列的安全配置,对访问mq的客户端进行账号和密码验证

vim conf/activemq.xml

加入:

        
               
                 
                        
                
               
        

从库也进行同样配置。

2.   管理后台的安全配置。

1.保证conf/jetty.xml中如下中的authenticate值为true

    
        
        
        
        
    

2.vimconf/jetty-realm.properties,修改相应账号密码,如下:

# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: admin!123, admin
user: user, user

注意格式,第一列是用户名、第二列是密码、第三列是角色

从库也进行同样配置。

你可能感兴趣的:(activemq)