rabbitmq 高可用记录

hosts:
    172.16.10.26 node1
    172.16.10.27 node2
    172.16.10.28 node3

把上面的主机分别添加到各自的hosts中

在三台主机上面创建.erlang.cookie文件在主目录

并把VORMVSAAOFOFEQKTNWBA添加进去

(3)rabbitmq-env.conf rabbitmq的环境参数配置
RABBITMQ_NODE_PORT 端口设置,默认为5672
RABBITMQ_NODENAME 节点名称,默认为rabbit
MNESIA_BASE 后端存储目录 ,默认为/var/lib/rabbitmq/mnesia
LOG_BASE 日志目录,默认为/var/log/rabbitmq/

安装
sudo rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
sudo yum install rabbitmq-server-3.6.10-1.noarch.rpm

sudo rabbitmqctl stop
sudo rabbitmq-server -detached

sudo rabbitmqctl cluster_status

sudo hostname node1

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@node1

sudo rabbitmqctl -n rabbit@node2 join_cluster rabbit@node1 //将rabbit_01添加到集群节点rabbit中去
rabbitmqctl cluster_status //查看集群节点的状态
rabbitmqctl -n rabbit_01@localhost start_app //启动rabbit_01节点的

sudo rabbitmq-plugins enable rabbitmq_management

.erlang.cookie必须具有可读权限,设置为600即可
sudo vim /var/lib/rabbitmq/.erlang.cookie
VORMVSAAOFOFEQKTNWBA

端口及用途
5672 客户端连接用途
15672 web管理接口
25672 集群通信用途

/etc/haproxy/haproxy.cfg
###########全局配置#########
global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy     # 改变当前工作目录
    stats socket /run/haproxy/admin.sock mode 660 level admin   # 创建监控所用的套接字目录
    pidfile  /var/run/haproxy.pid   # haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 
    maxconn  4000                   # 最大连接数,默认4000
    user   haproxy                  # 默认用户
    group   haproxy                 # 默认用户组
    daemon                          # 创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

###########默认配置#########
defaults
    log global
    mode    http                                # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
    option  httplog                             # 采用http日志格式
    option  dontlognull                         # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器
                                                # 或者监控系统为了探测该 服务是否存活可用时,需要定期的连接或者获取某
                                                # 一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;
                                                # 官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用
                                                # 该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
    timeout connect 5000                    # 连接超时时间
    timeout client  50000                   # 客户端连接超时时间
    timeout server  50000                   # 服务器端连接超时时间
    option  httpclose       # 每次请求完毕后主动关闭http通道 
    option  httplog         # 日志类别http日志格式 
    #option  forwardfor      # 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  
    option  redispatch      # serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    timeout connect 10000   # default 10 second timeout if a backend is not found
    maxconn     60000       # 最大连接数
    retries     3           # 3次连接失败就认为服务不可用,也可以通过后面设置 
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http
####################################################################
listen http_front
        bind 0.0.0.0:1080           #监听端口  
        stats refresh 30s           #统计页面自动刷新时间  
        stats uri /haproxy?stats            #统计页面url  
        stats realm Haproxy Manager #统计页面密码框上提示文本  
        stats auth admin:admin      #统计页面用户名和密码设置  
        #stats hide-version         #隐藏统计页面上HAProxy的版本信息

#####################我把RabbitMQ的管理界面也放在HAProxy后面了###############################
listen rabbitmq_admin 
    bind 0.0.0.0:8004
    server node1 192.168.0.31:15672
    server node2 192.168.0.32:15672
    server node3 192.168.0.33:15672
####################################################################
listen rabbitmq_cluster 
    bind 0.0.0.0:5672
    option tcplog
    mode tcp
    timeout client  3h
    timeout server  3h
    option          clitcpka
    balance roundrobin      #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)
    #balance url_param userid
    #balance url_param session_id check_post 64
    #balance hdr(User-Agent)
    #balance hdr(host)
    #balance hdr(Host) use_domain_only
    #balance rdp-cookie
    #balance leastconn
    #balance source //ip
    server   node1 192.168.0.31:5672 check inter 5s rise 2 fall 3   #check inter 2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用
    server   node2 192.168.0.32:5672 check inter 5s rise 2 fall 3
    server   node3 192.168.0.33:5672 check inter 5s rise 2 fall 3

haproxy http://172.16.10.26:8080/haproxy?stats
web http://172.16.10.26:8081
client http://172.16.10.26:8082

rabbitmqctl

(1)首先关闭rabbitmq: rabbitmqctl stop_app

(2)还原: rabbitmqctl reset

(3)启动: rabbitmqctl start_app

(4)添加用户: rabbitmqctl add_user root root

(5)设置权限:rabbitmqctl set_permissions -p / root "." "." ".*"

(6)查看用户: rabbitmqctl list_users

posted @ 2017-06-14 10:53  白云辉  阅读(558)  评论(0编辑  收藏  举报