公司要用rabbitmq研究了两周,特把
rabbitmq 高可用的研究成果备下

后续会更新封装的类库

安装erlang

wget http://www.gelou.me/yum/erlang-18.3-1.el6.x86_64.rpm

yum install erlang-18.3-1.el6.x86_64.rpm

安装rabbitmq rpm包:

wget http://www.gelou.me/yum/rabbitmq-server-3.6.1-1.noarch.rpm

rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

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

启动rabbitmq,并验证启动情况

rabbitmq-server --detached &ps aux |grep rabbitm

以服务的方式启动

service rabbitmq-server start

开启系列防火墙端口

/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 4369 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 25672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

iptables -I INPUT -p tcp --dport 8888 -j ACCEPT

iptables -I INPUT -p tcp --dport 5670 -j ACCEPT

iptables -I INPUT -p tcp --dport 5670 -j ACCEPT

/etc/rc.d/init.d/iptables save

/etc/init.d/iptables restart

/etc/init.d/iptables status

设置开机启动

rpm -aq |grep chkconfig

export PATH=/sbin:$PATH

chkconfig

chkconfig rabbitmq-server on

安装web管理

rabbitmq-plugins enable rabbitmq_management

访问地址

http://172.20.16.57:15672/#/

重复安装第二台等
集群命令重复安装第二台等

vim /etc/hosts

192.168.43.74 TD-YichehuiLinu

192.168.87.5  YichehuiLinux

重启

reboot

chmod 700 /var/lib/rabbitmq/.erlang.cookie

echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie

chmod 400 /var/lib/rabbitmq/.erlang.cookie

ps -ef | grep ^rabbitmq | cut -c 9-16 | xargs kill -9

rabbitmq-server --detached &ps aux |grep rabbitm

机器全启动后分别执行

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@各机器名

rabbitmqctl start_app

rabbitmqctl cluster_status

设置policy,以ha.开头的队列将会被镜像到集群其他所有节点,一个节点挂掉然后重启后会自动同步队列消息
必须将整个RabbitMQ集群的状态设置为镜像模式, 节点都执行

rabbitmqctl set_policy ha-all-queue "^ha\." '{"ha-mode":"all","ha-sync-mode":"automatic"}'

备用命令

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type disc

rabbitmqctl change_cluster_node_type ram

rabbitmqctl start_app

添加用户名admin,密码admin

rabbitmqctl add_user zhang 1234

设置admin用户tags为管理员

rabbitmqctl set_user_tags zhang administrator

设置admin用户配置、写、读的权限

rabbitmqctl set_permissions -p / zhang ".*" ".*" ".*"

haproxy搭建
1、安装haproxy

yum install haproxy

2、安装rsyslog
a. 检查rsyslog是否已安装

rpm -q rsyslog

b. 添加haproxy的log配置

cd /etc/rsyslog.d

vim haproxy.conf

=== 文件内容

$ModLoad imudp

$UDPServerRun 514

local2.* /var/log/haproxy.log

local3.* /var/log/haproxy.log

local10.* /var/log/haproxy.log

==========

c. 编辑/etc/sysconfig/rsyslog

vim /etc/sysconfig/rsyslog

添加内容:

SYSLOGD_OPTIONS="-c 2 -r -m 0"

d. 创建日志文件,并授权

cd /var/log

touch haproxy.log

chmod a+w haproxy.log

e. 重启rsyslog服务用法:

/etc/init.d/rsyslog {start|stop|restart|condrestart|try-restart|reload|force-reload|status}

/etc/init.d/rsyslog restart

配置所有机器
4、配置haproxy

> /etc/haproxy/haproxy.cfg

vim /etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------

# Example configuration for a possible web application. See the

# full configuration options online.

#

# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

#

#---------------------------------------------------------------------

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

# to have these messages end up in /var/log/haproxy.log you will

# need to:

#

# 1) configure syslog to accept network log events. This is done

# by adding the '-r' option to the SYSLOGD_OPTIONS in

# /etc/sysconfig/syslog

#

# 2) configure local2 events to go to the /var/log/haproxy.log

# file. A line like the following can be added to

# /etc/sysconfig/syslog

#

# local2.* /var/log/haproxy.log

#

log 127.0.0.1 local2 notice

chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

daemon

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

mode tcp

option tcplog

option dontlognull

option http-server-close

option redispatch

retries 3

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

timeout check 10s

maxconn 3000

###haproxy statistics monitor by laijingli 20160222

listen statics 0.0.0.0:8888

mode http

log 127.0.0.1 local0 debug

transparent

stats refresh 60s

stats uri / haproxy-stats

stats realm Haproxy \ statistic

stats auth zhang:1234

#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

listen rabbitmq_cluster

bind 0.0.0.0:5670

mode tcp

balance roundrobin

server ych51  172.20.16.51:5672 check inter 5000 rise 2 fall 2

server ych50  172.20.16.50:5672 check inter 5000 rise 2 fall 2

server TD-YichehuiLinu  192.168.43.74:5672 check inter 5000 rise 2 fall 2

server YichehuiLinux  192.168.87.5:5672 check inter 5000 rise 2 fall 2

server YichehuiLinux  192.168.87.5:9200 check inter 5000 rise 2 fall 2

5、 启动haproxy

/etc/init.d/haproxy restart

6、 备用命令停止haproxy

killall haproxy

http://192.168.87.5:8888/

http://192.168.43.74:15672/#/

三、安装和设置keepalived
1、安装keepalived

yum install keepalived

chkconfig --add keepalived

chkconfig --level 35 keepalived on

2、修改配置文件
配置keepalived

>  /etc/keepalived/keepalived.conf

vim  /etc/keepalived/keepalived.conf

内容:

=====================================================================

! Configuration File for keepalived

# 全局配置,demo中配置了邮件信息,此处因为调试中,暂时没有添加

global_defs {

}

# 集群资源监控,组合track_script进行

vrrp_script check_haproxy {

script "killall -0 haproxy"

interval 2

}

vrrp_instance HAPROXY_HA {

# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP

# 备用节点时,设置为:

# state BACKUP

state MASTER

# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个

interface eth1

# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机

virtual_router_id 80

# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文

# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP

# 备用节点时,内容为:

# unicast_src_ip 192.168.200.199

# unicast_peer {

# 192.168.200.200

# }

# 设置优先级,确保主节点的优先级高过备用节点

# 备用节点时,设置为:

priority 80

# priority 100

# 用于设定主备节点间同步检查时间间隔

advert_int 2

# 设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患

nopreempt

# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致

authentication {

auth_type PASS

auth_pass 1234

}

# 当keepalived切换状态到MASTER时,执行脚本

notify_master "/etc/keepalived/master.sh"

# 当keepalived切换状态到BACKUP时,执行脚本

notify_backup "/etc/keepalived/backup.sh"

# 当keepalived切换状态到FAULT时,执行脚本

notify_fault "/etc/keepalived/fault.sh"

# 当keepalived切换状态到STOP时,执行脚本

notify_fault "/etc/keepalived/stop.sh"

# 集群资源监控,组合vrrp_script进行

track_script {

check_haproxy

}

# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中

# 当状态切换到BACKUP时,此IP会自动从系统中删除

# 可以通过命令ip add查看切换后的状态

virtual_ipaddress {

192.168.43.201

}

}

====================================================================

配置全部
3、启动服务

因为是为了实现haproxy的高可用,启动时需要顺序启动:

(1) 启动haproxy:

haproxy -f /etc/haproxy/haproxy.cfg

(2) 启动keeepalived:先启动master节点,后启动BACKUP节点

/etc/init.d/keepalived restart

4、停止keeepalived服务

/etc/init.d/keepalived stop

大哥广告阁楼

rabbitmq+ keepalived+haproxy高可用集群详细命令的更多相关文章

  1. Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群

    一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...

  2. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  3. 集群相关、用keepalived配置高可用集群

    1.集群相关 2.keepalived相关 3.用keepalived配置高可用集群 安装:yum install keepalived -y   高可用,主要是针对于服务器硬件或服务器上的应用服务而 ...

  4. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  5. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  6. rabbitmq+haproxy+keepalived实现高可用集群搭建

    项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...

  7. 集群介绍 keepalived介绍 用keepalived配置高可用集群

    集群介绍 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开源软件有:heartb ...

  8. keepalived+MySQL高可用集群

    基于keepalived搭建MySQL的高可用集群   MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...

  9. RabbitMQ系列之高可用集群

    为了实现高可用,我采用LVS+双节点RabbitMq , 架构图如下: 在RabbitMQ之前放了LVS, LVS 采用 rr 轮询算法 , 目的是将请求平均分配到两个真实节点,并配置5672端口监控 ...

随机推荐

  1. UNIX环境高级编程笔记之进程控制

    本章重点介绍了进程控制的几个函数:fork.exec族._exit.wait和waitpid等,主要需要掌握的是父进程和子进程之间的运行机制,怎么处理进程的正常和异常终止.以及怎么让进程执行不同的程序 ...

  2. ux.plugin.ConTpl 模版元素监听扩展

    /* *tpl模版加入按钮 *<div class="x-button-normal x-button x-iconalign-center x-layout-box-item x-s ...

  3. c和c++关于const的一些区别

    以下参考了网上的一些资料并通过程序验证. 注意,以下情况都是用gcc和g++编译器得到的结果,用vs编译器又会有所不同. 以下说下c和c++中const定义的常量的一些区别: c++中用const定义 ...

  4. Haskell 与范畴论

    说到 Haskell,这真是一门逼格极高的编程语言,一般初学者如果没有相关函数式编程的经验,入门直接接触那些稀奇古怪的概念,简直要跪下.现在回想起来,隐隐觉得初学者所拥有的命令式编程语言(impera ...

  5. `cocos2dx 非完整` UI解析模块

    昨天在cocos2dx的一个群里,遇到一位匿名为x的朋友询问的问题,是关于ui的.他使用c++写了不少的ui封装节点,用来实现游戏中的各种不同效果.然后现在想改用lua,于是尝试使用最小代价去复用自己 ...

  6. JS基础回顾,小练习(去除字符串空格)

    方法1: var str = ' h t m l 5 '; function trim(str) { var reg = /(\s+)/g; var m,s = str; while(m = reg. ...

  7. 介绍WEB站点结构

    在这节里,我们将抛开Umbraco来看看已创建的站点.在我们介绍Umbraco之前,需要了解站点是如何工作的,如何使用使用浏览器工具. 我们看到在标签顶端的内容叫做页面标题.每个页面的标题都会改变表示 ...

  8. [ML] Concept Learning

    Candidate Elimination Thanks for Sanketh Vedula. This is a good demo to understand candidate elimina ...

  9. Slip.js – 在触摸屏上实现列表的滑动排序功能

    Slip.js 是一个很小的 JavaScript 库,用于实现对触摸屏的互动 Swipe 和对元素重新排序列表(Reordering).Slip.js 没有任何的依赖,你可以通过自定义 DOM 事件 ...

  10. MySQL中的备份和恢复

    MySQL备份 MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑.在MySQL中,使用mysaldump工具来完成备份.有以下3种来调用mysqldump: 备份 ...