rabbitmq在centos5.7上的安装步骤

一、服务器端
1、安装EPEL(Extra Packages for Enterprise Linux)
(1)x86_64位cpu
    su -c 'rpm -Uvh http://mirrors.yun-idc.com/epel/5/x86_64/epel-release-5-4.noarch.rpm'
(2)i386cpu
    su -c 'rpm -Uvh http://mirrors.yun-idc.com/epel/5/i386/epel-release-5-4.noarch.rpm'
2、安装simplejson
pip install simplejson
3、安装erlang语言环境
yum install erlang
4、安装RabbitMQ Server
(1)第1种安装法
yum install rabbitmq-server
(2)第2种安装法(不推荐)
下载rpm包
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.1.3/rabbitmq-server-3.1.3-1.noarch.rpm
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

yum install rabbitmq-server-3.1.3-1.noarch.rpm

二、python用客户端
pip install amqplib
pip install pika

三、rabbitmq cluster集群
1、修改主机名(仅仅三步)
   (1) 执行命令:hostname  <主机名>
        eg. hostname rabbit45
   (2)编辑/etc/hosts:
       加入 <对应节点的IP> <节点的主机名>
  eg.
   ip地址1 rabbit44
    ip地址2 rabbit45
   (3)编辑/etc/sysconfig/network:
       把localhost改成 <主机名>
  eg. HOSTNAME=rabbit45
   此时,ping <主机名>是通的。
2、配置其他节点的[主机名,IP]的映射关系(仅仅一步)
     编辑/etc/host:(注意:是需要集群的所有结点)
     加入 <对应节点的IP> <其他节点的主机名>
eg.
 ip地址1 rabbit44
  ip地址2 rabbit45

    此时,ping <其他节点的主机名>是通的。
3、配置RabbitMQ Server的环境变量:
   首先在/etc/rabbitmq/下建立文件rabbitmq-env.conf
   文件添加内容
   NODENAME=rabbit  # 设置结点名

4、搭建RabbitMQ Cluster。 
    建立RabbitMQ Cluster,首先一个很重要的前提就是,各个节点上安装的RabbitMQ Server和Erlang版本必须完全一致,同时各个节点RabbitMQ Server所使用的cookie必须完全一致,要不然无法建立Cluster。
注意:
   a、由于通过rabbitmq-server -detached时,产生的.erlang.cookie文件会放到主目录下(此目录优先级比/var/lib/rabbitmq高),所以应将主目录下的文件放到/var/lib/rabbitmq下,并且cookie文件的内容要保持一致,可以通过先启动一台机子的rabbitmq服务器产生一个.erlang.cookie文件后复制到另外一台机子上。
b、保持.erlang.cookie文件的权限为444,否则在运行时,会有权限问题
eg.假设现在我们已经登录到了rabbit45和rabbit44主机上。
        (1)、在rabbit45和rabbit44终端上执行:
                    rabbitmq-server -detached
               此时Node1和Node2的RabbitMQ就成功启动起来了。
                然后执行:
                    rabbitmqctl cluster_status
        会看到       
          Cluster status of node rabbit@rabbit45 ...
          [{nodes,[{disc,[rabbit@rabbit45}]},{running_nodes,[rabbit@rabbit45]}]
          ...done  
        (2)、在rabbit44上建立Cluster,并将rabbit45加入到集群中:
              首先要把Server启动时默认产生的cookie与rabbit45产生的保持一致:
               1、关掉当前运行(rabbit45)的RabbitMQ Server,即执行rabbitmqctl stop_app。
               2、将rabbit45加入到rabbit44中,执行rabbitmqctl join_cluster rabbit@rabbit44
  3、启动起来看看有没有出错,执行rabbitmqctl start_app
       此时再次执行rabbitmqctl cluster_status,此时会看到
              Cluster status of node rabbit@rabbit45 ...
             [{nodes,[{disc,[rabbit@rabbit44,rabbit@rabbit45]}]},
              {running_nodes,[rabbit@rabbit44,rabbit@rabbit45]},
              {partitions,[]}]
              ...done.
               再到rabbit44执行rabbitmqctl cluster_status,此时同样会看到上面的输出。 

到这里,我的RabbitMQ Server Cluster就搭建好了。
另外还可以通过配置rabbitmq.config文件来配置好Cluster内的所有节点,参考官方文档。

5、使用镜像队列
(1)先增加负载均衡
安装:
    sudo yum install haproxy

在/etc/haproxy/haproxy.cfg文件下添加rabbitmq配置:

# rabbitmq-cluster dispatch
listen rabbitmq_cluster 0.0.0.0:5672
    mode tcp
    balance roundrobin
    option tcpka
    server rabbit44 ip地址:5672 check inter 2000 rise 2 fall 3
    server rabbit45 ip地址:5672 check inter 2000 rise 2 fall 3
修改之后,重启
或重新加载/etc/init.d/haproxy reload

6、代码访问
(1)publisher.py发送端
import pika
 
class Publisher():
    def __init__(self):
        self.connection = pika.BlockingConnection(pika.ConnectionParameters(host='xx.xx.xx.43', port=5672))
        self.channel = self.connection.channel()
        self.channel.confirm_delivery()   # Turn on delivery confirmations,保证在挂掉一个rabbitmq服务后,不丢数据
        self.channel.exchange_declare(exchange='ex', type='direct', durable=True)
        self.channel.queue_declare(queue='que', durable=True)
        self.channel.queue_bind(exchange='ex', queue='que', routing_key='update')
 
    def write_message(self, json_string):
        self.channel.basic_publish(exchange='ex',
        routing_key='update',
        body=json_string,
        properties=pika.BasicProperties(delivery_mode=2))


    def disconnect(self):
        self.connection.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值