热门标签 | 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




                    推荐阅读
                    • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
                    • 基于PgpoolII的PostgreSQL集群安装与配置教程
                      本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
                    • Linux如何安装Mongodb的详细步骤和注意事项
                      本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
                    • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
                      nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
                    • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
                    • ZooKeeper 学习
                      前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
                    • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
                    • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
                    • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
                    • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
                    • centos6.8 下nginx1.10 安装 ... [详细]
                    • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
                      本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
                    • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
                    • linux下编译安装lnmp
                      2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
                    • linux下的mesa一般版本比较低,按照高版本mesa1.下载代码下载路径:https:www.mesa3d.org用git下载容易失败。用Downl ... [详细]
                    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社区 版权所有