教你用node从零搭建一套微服务系统(三)

        做为微服务的消息中心,单节点必定支撑不住庞大的压力,本节,笔者带你们去搭建一套rabbitmq集群,以及用HaProxy去代理集群节点。

1、erlang环境
别去搞什么yum安装了,很慢很慢,这是最新的源码地址
http://erlang.org/download/otp_src_19.3.tar.gz
建议迅雷或者其余工具先下载下来,而后用rz(没有安装的同窗能够yum install lrzsz -y)上传到服务器。
/* 安装依赖 */
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel
/* 编译安装 */
tar -xzvf otp_src_19.3.tar.gz
cd ./otp_src_19.3
./configure --prefix=/usr/erlang --without-javac 
make && make install
2、rabbitmq单节点安装
/* rabbitmq下载地址 */
https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.14-1.el7.noarch.rpm

/* 导入 */
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

/* 安装 */
yum install rabbitmq-server-3.6.14-1.el7.noarch.rpm

/* 开启web管理界面 */
rabbitmq-plugins enable rabbitmq_management

/* 开启15672 web端口 */
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd —reload

/* 用户命令相应的命令 */
(1) 新增一个用户rabbitmqctl add_user Username Password
(2) 删除一个用户rabbitmqctl delete_user Username
(3) 修改用户的密码rabbitmqctl change_password Username Newpassword
(4) 查看当前用户列表rabbitmqctl list_users

/* 容许用户远程访问 */
rabbitmqctl set_permissions -p "/" User ".*" ".*" ".*"

/* 设置用户角色的命令 */
rabbitmqctl set_user_tags User Tag
User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其余自定义名称)。
3、rabbitmq集群搭建

       建议将1节点虚拟机复制两份 这样能够保证rabbitmq cookie一致,不用作变动。而后再分别编辑三台节点的hosts文件,三台节点hosts文件一致。java

vi /etc/hosts
/* 加入三个节点 */
192.168.41.140   rabbitmq-node1.com rabbitmq-node1
192.168.41.141   rabbitmq-node2.com rabbitmq-node2
192.168.41.142   rabbitmq-node3.com rabbitmq-node3

重启三台服务器node

/* 分别以detached方式启动三台rabbitmq */
rabbitmq-server -detached
// 若是提示PID FILE不能写入,能够关闭应用,直接以服务方式启动,关闭以后重启仍然提示有实例正在运行能够强制杀死线程
ps aux | grep rabbitmq
kill -9 xxxx
/* 启动服务 */
service rabbitmq-server start

让node二、node3加入集群linux

/* 将node2节点加入node1 做为RAM类型节点 */
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq-node1 --ram
rabbitmqctl start_app

/* 将node3节点加入node1 做为disc类型节点 */
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq-node1
rabbitmqctl start_app

/* 查看集群信息 */
rabbitmqctl cluster_status

打开web管理界面查看,三台节点已经成功启动
c++

安装HAProxy来代理三台节点web

/* haproxy下载连接 */
http://www.haproxy.org/download/1.7/src/haproxy-1.7.9.tar.gz
/* 根据平台选择编译参数 */
uname -r

/* 安装c/c++ */
yum install gcc gcc-c++

/* 笔者平台 */
3.10.0-693.5.2.el7.x86_64
// 因此编译参数为
make TARGET=linux2628 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

/* 添加环境变量 */
vi /etc/profile
export PATH=$PATH:/usr/local/haproxy/sbin
source /etc/profile

/* 复制bin文件,后续启动须要 */
cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
haproxy -v 后显示以下则表示成功

HA-Proxy version 1.7.9 2017/08/18
Copyright 2000-2017 Willy Tarreau <willy@haproxy.org>
/* 拷贝启动文件 */
cp examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy

/* 建立系统帐号 */
groupadd haproxy
useradd -g haproxy -M -s /sbin/nologin haproxy

/* 建立配置文件 */
mkdir /etc/haproxy
vi /etc/haproxy/haproxy.cfg
====
global
    #设置日志
    log 127.0.0.1 local3 info
    chroot /usr/local/haproxy
    #用户与用户组
    user haproxy
    group haproxy
    #守护进程启动
    daemon
    #最大链接数
    maxconn 4000
listen rabbitmq_local_cluster
   bind 0.0.0.0:5672
   #配置TCP模式
   mode tcp
   option tcplog
   #简单的轮询
   balance roundrobin
  #rabbitmq集群节点配置
  # inter 2000 健康检查时间间隔2秒
  # rise 3 检测多少次才认为是正常的
  # fall 3 失败多少次才认为是不可用的
  # weight 30 权重
  # 须要转发的ip及端口
    server rabbitmq-node1 192.168.41.140:5672 check inter 2000 rise 3 fall 3 weight 30
    server rabbitmq-node2 192.168.41.141:5672 check inter 2000 rise 3 fall 3 weight 30
    server rabbitmq-node3 192.168.41.142:5672 check inter 2000 rise 3 fall 3 weight 30

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

// 去掉下面两行前的#
$ModLoad imudp
$UDPServerRun 514

// 添加下面一行保存
local3.*  /var/log/haproxy.log

// 重启rsyslog
systemctl restart rsyslog
启动haproxy
service haproxy start

/* 开放1080端口 */
firewall-cmd --zone=public --add-port=1080/tcp --permanent
firewall-cmd --reload

访问http://ip:1080/stats,输入帐号密码 admin admin 以下图
服务器

用咱们上一节搭建的微服务去连接HaProxy
这是配置信息
module.exports = Object.assign({
  rabbitMq_host: '192.168.41.140', // 替换成haproxy的ip
  rabbitMq_port: '5672', // haproxy代理端口
  rabbitMq_user: '***', // 这里替换成本身rabbitmq-server上的用户
  rabbitMq_password: '*****', // 这里替换成本身rabbitmq-server上的密码
  // server_host: '106.14.77.183',
  server_host: '127.0.0.1',
  server_port: 8889,
  rabbitMq_queue: {
    logic01: 'server',
    logic02: 'server_test'
  }
});
再去查看rabbitmq集群监控界面,已经多出了一个链接一个queue和一个chanel

查看queue,发现名字和咱们配置的是同样的,连接成功

启动三个一样的微服务后,发现连接变成3,消费者也变成了3

        至此rabbitmq集群以及HaProxy负载均衡搭建完毕。若是各位看官对笔者的文章感兴趣的话,但愿关注下笔者的我的公众号,你们一块儿交流探讨,若有写的不对的地方,还但愿各位指正,笔者深感荣幸,最后感谢你们的阅读。

相关文章
相关标签/搜索