百万架构师第三十七课:RabbitMq:高可用集群搭建步骤|JavaGuide ...

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

安装环境

Centos-7
三台虚拟机
  1. 192.168.8.150(磁盘节点)
  2. 192.168.8.45 (内存节点)
  3. 192.168.8.40 (内存节点)
复制代码
一、安装Erlang

1、erlang 下载地址:

http://www.rabbitmq.com/releases/erlang/
2、创建目录
  1. [root@nogeek ]# mkdir -p /usr/local/tools/rabbitmq
  2. [root@nogeek ]# cd /usr/local/tools/rabbitmq
复制代码
3、下载安装包
  1. [root@nogeek ]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
复制代码
4、安装
  1. [root@nogeek ]# rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm
复制代码
二、安装RabbitMQ

1、rabbitMQ 下载地址

https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/
2、下载安装包
  1. [root@nogeek ]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el6.noarch.rpm
  2. [root@nogeek ]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
复制代码
3、安装
  1. [root@nogeek ]#  rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
复制代码
问题办理

1、错误:依赖检测失败:
socat 被 rabbitmq-server-3.6.12-1.el6.noarch 必要
办理报错:
  1. [root@nogeek ]#  wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
  2. [root@nogeek ]#  yum makecache -y
  3. [root@nogeek ]#  yum install socat -y
复制代码
2、如果yum源有问题,无法安装:将CentOS的yum源更换为国内的阿里云源

使用yum时File contains no section headers.办理办法
http://xiaojingjing.iteye.com/blog/2393165
  1. [root@nogeek ]#  rm -f /etc/yum.repos.d/*
  2. [root@nogeek ]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  3. [root@nogeek ]# yum clean all
复制代码
三、集群配置

1、hosts配置

三台呆板的hosts都配置
  1. [root@nogeek ]# vim /etc/hosts
  2. 192.168.8.150 rabbit1 (磁盘节点)
  3. 192.168.8.45 rabbit2(内存节点)
  4. 192.168.8.40 rabbit3(内存节点)
复制代码
2、同步.erlang.cookie
保持三台呆板的.erlang.cookie同步
  1. /var/lib/rabbitmq/.erlang.cookie
复制代码
在第二台呆板8.45执行:
  1. [root@nogeek ]# scp .erlang.cookie root@192.168.8.45:/var/lib/rabbitmq/
  2. [root@nogeek ]# chown rabbitmq:rabbitmq .erlang.cookie
复制代码
在第三台呆板8.40执行:
  1. [root@nogeek ]# scp .erlang.cookie root@192.168.8.40:/var/lib/rabbitmq/
  2. [root@nogeek ]# chown rabbitmq:rabbitmq .erlang.cookie
复制代码
重启服务
  1. [root@nogeek ]# systemctl stop rabbitmq-server.service
  2. [root@nogeek ]# systemctl start rabbitmq-server.service
复制代码
或:
  1. [root@nogeek ]# systemctl restart rabbitmq-server.service
复制代码
查看服务状态:
  1. [root@nogeek ]# systemctl status rabbitmq-server.service
复制代码
如果启动报错:
  1. Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
复制代码
如果是由于服务停不掉,就要kill 端口。
3、参加集群
首先开放集群通信端口:
  1. [root@nogeek ]# firewall-cmd --permanent --add-port={5672/tcp,4369/tcp,25672/tcp}
  2. [root@nogeek ]# firewall-cmd --reload
  3. [root@nogeek ]# setsebool -P nis_enabled 1
复制代码
在第二台45,第三台机,40上执行:
  1. [root@nogeek ]# rabbitmqctl stop_app
  2. [root@nogeek ]# rabbitmqctl reset
  3. [root@nogeek ]# rabbitmqctl join_cluster rabbit@rabbit1 --ram
复制代码
创建用户:三台服务器都执行
  1. [root@nogeek ]# firewall-cmd --permanent --add-port=15672/tcp
  2. [root@nogeek ]# firewall-cmd –-reload
  3. [root@nogeek ]# rabbitmqctl add_user admin admin
  4. [root@nogeek ]# rabbitmqctl set_user_tags admin administrator
  5. [root@nogeek ]# rabbitmqctl set_permissions -p / admin "." "." ".*"
复制代码
4、
RabbitMQ镜像队列
可以参考:
https://www.cnblogs.com/saneri/p/7798251.html
5、HAProxy + Keepalived 高可用方案
一、HAProxy
将5672端口映射为5673端口,15672端口映射为15673端口。
1)在两个内存节点上安装HAProxy
  1. [root@nogeek ]#  yum install haproxy
复制代码
2)编辑配置文件
  1. [root@nogeek ]# vim /etc/haproxy/haproxy.cfg
复制代码
内容修改为:
  1. global
  2.     log         127.0.0.1 local2
  3.     chroot      /var/lib/haproxy
  4.     pidfile     /var/run/haproxy.pid
  5.     maxconn     4000
  6.     user        haproxy
  7.     group       haproxy
  8.     daemon
  9.     stats socket /var/lib/haproxy/stats
  10.        
  11. defaults
  12.     log                     global
  13.     option                  dontlognull
  14.     option                  redispatch
  15.     retries                 3
  16.     timeout connect         10s
  17.     timeout client          1m
  18.     timeout server          1m
  19.     maxconn                 3000
  20.        
  21. listen http_front
  22.         mode http
  23.         bind 0.0.0.0:1080           #监听端口
  24.         stats refresh 30s           #统计页面自动刷新时间
  25.         stats uri /haproxy?stats    #统计页面url
  26.         stats realm Haproxy Manager #统计页面密码框上提示文本
  27.         stats auth admin:123456     #统计页面用户名和密码设置
  28.                
  29. listen rabbitmq_admin
  30.     bind 0.0.0.0:15673
  31.     server node1 192.168.8.40:15672
  32.     server node2 192.168.8.45:15672
  33.        
  34. listen rabbitmq_cluster 0.0.0.0:5673
  35.     mode tcp
  36.     balance roundrobin
  37.     timeout client 3h
  38.     timeout server 3h
  39.     timeout connect 3h
  40.     server   node1 192.168.8.40:5672 check inter 5s rise 2 fall 3
  41.     server   node2 192.168.8.45:5672 check inter 5s rise 2 fall 3
复制代码
3)启动HAProxy
  1. [root@nogeek ]# haproxy -f /etc/haproxy/haproxy.cfg
复制代码
二、在两个内存节点上安装Keepalived
VIP 为 192.168.8.201
1)安装Keepalived
  1. [root@nogeek ]# yum -y install keepalived
复制代码
2)修改配置文件
  1. [root@nogeek ]# vim /etc/keepalived/keepalived.conf
复制代码
内容改成(物理网卡和当前主机IP要修改):
  1. global_defs {
  2.    notification_email {
  3.      acassen@firewall.loc
  4.      failover@firewall.loc
  5.      sysadmin@firewall.loc
  6.    }
  7.    notification_email_from Alexandre.Cassen@firewall.loc
  8.    smtp_server 192.168.200.1
  9.    smtp_connect_timeout 30
  10.    router_id LVS_DEVEL
  11.    vrrp_skip_check_adv_addr
  12.    # vrrp_strict    # 注释掉,不然访问不到VIP
  13.    vrrp_garp_interval 0
  14.    vrrp_gna_interval 0
  15. }
  16. global_defs {
  17.    notification_email {
  18.      acassen@firewall.loc
  19.      failover@firewall.loc
  20.      sysadmin@firewall.loc
  21.    }
  22.    notification_email_from Alexandre.Cassen@firewall.loc
  23.    smtp_server 192.168.200.1
  24.    smtp_connect_timeout 30
  25.    router_id LVS_DEVEL
  26.    vrrp_skip_check_adv_addr
  27.    # vrrp_strict    # 注释掉,不然访问不到VIP
  28.    vrrp_garp_interval 0
  29.    vrrp_gna_interval 0
  30. }
  31. # 检测任务
  32. vrrp_script check_haproxy {
  33.     # 检测HAProxy脚本
  34.     script "/etc/keepalived/script/check_haproxy.sh"
  35.     # 每隔两秒检测
  36.     interval 2
  37.     # 权重
  38.     weight 2
  39. }
  40. # 虚拟组
  41. vrrp_instance haproxy {
  42.     state MASTER # 此处为`主`,备机是 `BACKUP`【此处要修改】
  43.     interface ens33 # 物理网卡,根据情况而定 【此处要修改】
  44.     mcast_src_ip 192.168.8.40 # 当前主机ip 【此处要修改】
  45.     virtual_router_id 51 # 虚拟路由id,同一个组内需要相同
  46.     priority 100 # 主机的优先权要比备机高
  47.     advert_int 1 # 心跳检查频率,单位:秒
  48.     authentication { # 认证,组内的要相同
  49.         auth_type PASS
  50.         auth_pass 1111
  51.     }
  52.     # 调用脚本
  53.     track_script {
  54.         check_haproxy
  55.     }
  56.     # 虚拟ip,多个换行
  57.     virtual_ipaddress {
  58.         192.168.8.201
  59.     }
  60. }
复制代码
3)启动keepalived
  1. [root@nogeek ]# keepalived -D
复制代码
来源于:  https://javaguide.net
微信公众号:不止极客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表