vim /etc/hostname
vim /etc/hosts10.211.55.74 node110.211.55.75 node210.211.55.76 node3
/etc/init.d/network restart
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/usr/local/rabbitmq/.erlang.cookiescp /var/lib/rabbitmq/.erlang.cookie root@node3:/usr/local/rabbitmq/.erlang.cookie
官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:第一个是$home/.erlang.cookie;第二个地方就是/var/lib/rabbitmq/.erlang.cookie。
rabbitmq-server -detached
rabbitmqctl stop_app (rabbitmqctl stop 会将 Erlang 虚拟机关闭, rabbitmqctl stop_app 只关闭 RabbitMQ 服务 )rabbitmqctl resetrabbitmqctl join_cluster rabbit@node1rabbitmqctl start_app( 只启动应用服务 )
rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster rabbit@node2rabbitmqctl start_app
rabbitmqctl cluster_status
创建账号rabbitmqctl add_user admin 123设置用户角色rabbitmqctl set_user_tags admin administrator设置用户权限rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_apprabbitmqctl cluster_statusrabbitmqctl forget_cluster_node rabbit@node2(node1 机器上执行 )
HAProxy的特点是:
1、HAProxy是支持虚拟主机的,,并能支持上万级别的连接;
2、能够补充Nginx的一些缺点比如Session的保持,cookie的引导等工作;
3、支持url检测后端的服务器出问题的检测会有很好的帮助;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS
6、能够提供4层,7层代理。HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量,7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则;
7、HAProxy负载均衡算法具体有如下几种:
①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
②static-rr,表示根据权重;
③leastconn,表示最少连接者先处理;
④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法;
⑤ri,表示根据请求的URI;
⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
1、下载依赖包
yum install gcc
2、下载haproxy
yum install haproxy -y
3、编辑 haproxy 配置文件
vi /etc/haproxy/haproxy.cfg
新增listen内容,根据实际情况,修改default内容:
#---------------------------------------------------------------------
# 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
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
# haproxy统计页面配置段
listen stats
# 指定统计页面监听的端口
bind *:9188
# 指定统计页面运行的模式
mode http
# 指定开启统计页面功能
stats enable
# 如果不设置URI,默认是/haproxy?stats
stats uri /status
# 指定登入是提示信息,\表示转义空白字符
stats realm HAProxy\ statistics
# 指定用户名和密码
stats auth admin:admin123
# 指定统计页面自动刷新的时长
stats refresh 20
# 如果用户认证成功,统计页面可以被访问
stats admin if TRUE
#隐藏统计页面上HAProxy的版本信息
stats hide-version
listen rabbitmq_cluster
bind *:5671
option tcplog
mode tcp
timeout client 3h
timeout server 3h
balance roundrobin
# inter 2000 是健康状态检测的时间间隔,rise 2:2次请求成功认为服务器可用,fall 3:3次请求不成功认为服务器不可用
server node_206 10.10.240.206:5672 check inter 5s rise 2 fall 3
server node2_207 10.10.240.207:5672 check inter 5s rise 2 fall 3
server node3_107 10.10.252.107:5672 check inter 5s rise 2 fall 3
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
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
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
4、启动haproxy
systemctl start haproxy
5、错误记录
HAProxy 报错(Starting proxy stats: cannot bind socket [0....:7777]
执行如下命令可解决
setsebool -P haproxy_connect_any=1
启动完成后可查看haproxy管理端:
http://10.10.252.107:9188/status