热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

rabbitMQ+haproxy+keepalived部署手册

rabbitMQ+haproxy+keep

rabbitMQ+haproxy+keepalived部署手册

环境介绍

共有172.16.86.45、172.16.86.46两台RabbitMQ Server,互为主备;

同时两台机器安装Haporxy,每个Haproxy承担2台机器的负载均衡;

两台Harpoxy采用Keepalived互为主备,VIP是172.16.86.203。

安装MQ产品

两台机器相同操作

1)新建用户

[root@DFJK-TEST-16 ~]# useradd -m -d app/rabbitmq rabbitmq

[root@DFJK-TEST-16 ~]# passwd rabbitmq

密码:rabbitmq

2)安装路径

/app/rabbitmq

3)依赖包安装

    [root@DFJK-TEST-16 tools]# cd app/tools/
    [root@DFJK-TEST-16 tools]# ll
    total 17960
    -rw-r--r-- 1 root root 18388008 Feb 25 2016 erlang-17.4-1.el6.x86_64.rpm
    [root@DFJK-TEST-16 tools]# yum install erlang-17.4-1.el6.x86_64.rpm –y
    依赖openssl

    4)安装MQ

      [rabbitmq@DFJK-TEST-16 soft]$ pwd
      /app/rabbitmq/soft
      [rabbitmq@DFJK-TEST-16 soft]$ ll
      total 4096
      -rw-r--r-- 1 rabbitmq rabbitmq 4191686 Feb 25 2016 rabbitmq-server-generic-unix-3.5.4.tar.gz
      [rabbitmq@DFJK-TEST-16 soft]$ tar zxvf rabbitmq-server-generic-unix-3.5.4.tar.gz -C /app/rabbitmq/

      5)解决5672端口占用

        [root@DFJK-TEST-16 ~]# lsof -i :5672
        COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
        qpidd 2161 qpidd 10u IPv4 11981 0t0 TCP *:amqp (LISTEN)
        [root@DFJK-TEST-16 ~]# chkconfig --list|grep qpidd
        qpidd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
        [root@DFJK-TEST-16 ~]# chkconfig --level 2345 qpidd off
        [root@DFJK-TEST-16 ~]# chkconfig --list|grep qpidd
        qpidd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
        [root@DFJK-TEST-16 ~]# ps -ef |grep qpidd
        qpidd 2161 1 0 2017 ? 00:25:44 usr/sbin/qpidd --data-dir var/lib/qpidd --daemon
        root 27628 27206 0 16:07 pts/0 00:00:00 grep qpidd
        [root@DFJK-TEST-16 ~]# kill -9 2161
        [root@DFJK-TEST-16 ~]# lsof -i :5672

        6)启动并配置rabbitmq控制台

          [rabbitmq@DFJK-TEST-16 sbin]$ cd ~/rabbitmq_server-3.5.4/sbin/
          [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmq-server &
          [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmq-plugins enable rabbitmq_management

          7)添加用户并授权(确保rabbitmq在启动状态)

            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl add_user rabbit c0@mct3ch#r@bbit
            Creating user "rabbit" ...
            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl set_user_tags rabbit administrator
            Setting tags for user "rabbit" to [administrator] ...
            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl set_permissions -p rabbit ".*" ".*" ".*"
            Setting permissions for user "rabbit" in vhost "/" ...
            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl list_users
            Listing users ...
            guest [administrator]
            rabbit [administrator]
            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl delete_user guest
            Deleting user "guest" ...
            [rabbitmq@DFJK-TEST-16 sbin]$ ./rabbitmqctl list_users
            Listing users ...
            rabbit [administrator]

            备注:

                  输入http://ip:15672可以登录管理界面,默认账户guest/guest只能使用http://localhost:15672登录,要想远程登录,需要添加一个新的用户:
                  # rabbitmqctl add_user admin 1234
                  #用户设置为administrator才能远程访问
                  #rabbitmqctl set_user_tags admin administrator 
                  #rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //该命令使用户admin具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源 
                  查看所有用户#rabbitmqctl list_users


               因为RabbitMQ的集群是通过Erlang的集群来实现的,所以,要求两台机器的COOKIE文件

                   /app/rabbitmq/.erlang.COOKIE 文件内容一致

              将45的文件内容覆盖46文件内容。

                [rabbitmq@DFJK-TEST-16 ~]$ cat .erlang.COOKIE
                LVSZMXVXYAMFLUFBYBEC
                [rabbitmq@DFJK-TEST-17 ~]$ ls .erlang.COOKIE -l
                -r-------- 1 rabbitmq rabbitmq 20 May 22 00:00 .erlang.COOKIE
                [rabbitmq@DFJK-TEST-17 ~]$ chmod 600 .erlang.COOKIE
                [rabbitmq@DFJK-TEST-17 ~]$ ll .erlang.COOKIE
                -rw------- 1 rabbitmq rabbitmq 20 May 22 00:00 .erlang.COOKIE
                [rabbitmq@DFJK-TEST-17 ~]$ vi .erlang.COOKIE
                [rabbitmq@DFJK-TEST-17 ~]$ cat .erlang.COOKIE
                LVSZMXVXYAMFLUFBYBEC
                由于RabbitMQ在启动Booker时会检查该文件的权限,必须为400,否则会报错,所以要修改文件的权限
                [rabbitmq@DFJK-TEST-17 ~]$ chmod 400 .erlang.COOKIE
                [rabbitmq@DFJK-TEST-17 ~]$ ll .erlang.COOKIE
                -r-------- 1 rabbitmq rabbitmq 21 May 22 16:30 .erlang.COOKIE





                Haproxy

                1)安装

                [root@DFJK-TEST-16 ~]# yum install haproxy -y

                修改/etc/haproxy/haproxy.cfg,在文件后面添加以下内容:

                  [root@DFJK-TEST-17 ~]# vi etc/haproxy/haproxy.cfg


                  #配置TCP模式
                  mode tcp
                  option tcplog
                  #简单的轮询
                  balance roundrobin
                  #rabbitmq集群节点配置
                  server rabbit1 172.16.86.45:5672 check inter 5000 rise 2 fall 2
                  server rabbit2 172.16.86.46:5672 check inter 5000 rise 2 fall 2

                  #配置haproxy web监控,查看统计信息
                  listen private_monitoring :8100
                  mode http
                  option httplog
                  stats enable
                  #设置haproxy监控地址为http://localhost:8100/stats
                  stats uri stats
                  stats refresh 30s
                  #添加用户名密码认证
                  stats auth admin:1234





                  2)启动 

                   # haproxy -f haproxy.cfg

                  3)重启动

                  # service haproxy restart

                    配置详解:
                    ##############全局配置########################
                    global
                    log 127.0.0.1 local0
                    log 127.0.0.1 local1 notice
                    chroot /var/lib/haproxy #改变当前工作目录
                    stats socket /run/haproxy/admin.sock mode 660 level admin #创建监控所用的套接字目录
                    stats timeout 30s #超时时间
                    user haproxy #默认用户
                    group haproxy #默认用户组
                    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 #默认的模式 tcp|http|health 可选,tcp是4层,http是7层,health至返回OK
                    option httplog #http日志模式
                    option dontlognull # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器
                    # 或者监控系统为了探测该 服务是否存活可用时,需要定期的连接或者获取某
                    # 一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;
                    # 官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用
                    # 该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
                    timeout connect 5000 #连接超时时间
                    timeout client 50000 #客户端连接超时时间
                    timeout server 50000 #服务端连接超时时间
                    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 #监听端口
                    mode http
                    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.56.111:15672
                    server node2 192.168.56.112:15672
                    server node3 192.168.56.113: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.56.111:5672 check inter 5s rise 2 fall 3 #check inter 2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用
                    server node2 192.168.56.112:5672 check inter 5s rise 2 fall 3
                    server node3 192.168.56.113:5672 check inter 5s rise 2 fall 3




                    推荐阅读
                    • Linux下MySQL 8.0.28安装指南
                      本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
                    • 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。netstat -anlp | grep mysqltcp 0&am ... [详细]
                    • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
                      在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
                    • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
                      在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
                    • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
                      本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
                    • 在Linux系统中避免安装MySQL的简易指南
                      在Linux系统中避免安装MySQL的简易指南 ... [详细]
                    • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
                    • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
                    • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
                      在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
                    • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
                      MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
                    • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
                      本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
                    • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
                    • 2016-2017学年《网络安全实战》第三次作业
                      2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
                    • 在MySQL中实现时间比较功能的详细解析与应用
                      在MySQL中实现时间比较功能的详细解析与应用。本文深入探讨了MySQL中时间比较的实现方法,重点介绍了`UNIX_TIMESTAMP`函数的应用。该函数可以接收一个日期时间参数,也可以不带参数使用,其返回值为Unix时间戳,便于进行时间的精确比较和计算。此外,文章还涵盖了其他相关的时间处理函数和技巧,帮助读者更好地理解和掌握MySQL中的时间操作。 ... [详细]
                    • 在CentOS上部署和配置FreeSWITCH
                      在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
                    author-avatar
                    傻嫙嵂
                    这个家伙很懒,什么也没留下!
                    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
                    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有