当前位置: 首页 > 后端技术 > Node.js

手把手教你用node从头搭建微服务系统(三)

时间:2023-04-03 18:41:37 Node.js

作为微服务的消息中枢,单个节点肯定承受不了巨大的压力。本节笔者将带大家搭建一个rabbitmq集群,并使用HaProxy代理集群节点。1、不要在erlang环境下做任何yum安装。这很慢。这是最新的源地址http://erlang.org/download/otp_src_19.3.tar.gz建议先下载迅雷或者其他工具,然后使用rz(没有安装的同学可以yuminstalllrzsz-y)上传到服务器。/*安装依赖*/yum-yinstallmakegccgcc-c++kernel-develm4ncurses-developenssl-develunixODBC-devel/*编译安装*/tar-xzvfotp_src_19.3.tar.gzcd./otp_src_19.3./configure--prefix=/usr/erlang--without-javacmake&&makeinstall2.rabbitmq单节点安装/*rabbitmq下载地址*/https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.14-1.el7.noarch.rpm/*import*/rpm--importhttps://www.rabbitmq.com/rabbitmq-release-signing-key.asc/*install*/yuminstallrabbitmq-server-3.6.14-1.el7.noarch.rpm/*开启web管理界面*/rabbitmq-pluginsenablerabbitmq_management/*开启15672web端口*/firewall-cmd--zone=public--add-port=15672/tcp--permanentfirewall-cmd--reload/*用户命令对应的命令*/(1)添加新用户rabbitmqctladd_user用户名密码(2)删除用户rabbitmqctldelete_user用户名(3)修改用户的密码rabbitmqctlchange_passwordUsernameNewpassword(4)查看当前用户列表rabbitmqctllist_users/*允许用户远程访问*/rabbitmqctlset_permissions-p"/"User".*"".*"".*"/*设置用户角色的命令*/rabbitmqctlset_user_tags使用rTagUser为用户名,Tag为角色名(对应上面的administrator,monitoring,policymaker,management,或其他自定义名称)3.rabbitmq集群搭建建议复制1节点虚拟机两次,确保rabbitmqcookie是一致的。无需更改。然后分别编辑三个节点的hosts文件,三个节点的hosts文件一致。vi/etc/hosts/*添加三个节点*/192.168.41.140rabbitmq-node1.comrabbitmq-node1192.168.41.141rabbitmq-node2.comrabbitmq-node2192.168.41.142rabbitmq-node3.comrabbitmq-node3重启三台Server/*以detached模式启动三个rabbitmq*/rabbitmq-server-detached//如果提示无法写入PIDFILE,可以关闭应用,直接作为服务启动。杀死线程psaux|greprabbitmqkill-9xxxx/*启动服务*/servicerabbitmq-serverstart让node2和node3加入集群/*将node2作为RAM类型节点添加到node1*/rabbitmqctlstop_apprabbitmqctlresetrabbitmqctljoin_clusterrabbit@rabbitmq-node1--ramrabbitmqctlstart_app/*将node3作为磁盘类型节点添加到node1中*/rabbitmqctlstop_apprabbitmqctlresetrabbitmqctljoin_clusterrabbit@rabbitmq-node1rabbitmqctlstart_app/*查看集群信息*/rabbitmqctlcluster_status打开web管理界面查看,三个节点已经成功启动并安装了HAProxyTo代理三节点/*haproxy下载地址*/http://www.haproxy.org/download/1.7/src/haproxy-1.7.9.tar.gz/*根据平台选择编译参数*/uname-r/*安装c/c++*/yuminstallgccgcc-c++/*作者平台*/3.10.0-693.5.2.el7.x86_64//所以编译参数是makeTARGET=linux2628PREFIX=/usr/local/haproxymakeinstallPREFIX=/usr/local/haproxy/*添加环境变量*/vi/etc/profileexportPATH=$PATH:/usr/local/haproxy/sbinsource/etc/profile/*复制bin文件,后续需要startup*/cp/usr/local/haproxy/sbin/haproxy/usr/sbin/haproxy-v显示如下表示成功HA-Proxyversion1.7.92017/08/18Copyright2000-2017WillyTarreau/*复制启动文件*/cpexamples/haproxy.init/etc/init.d/haproxychmod755/etc/init.d/haproxy/*创建系统账户*/groupaddhaproxyuseradd-ghaproxy-M-s/sbin/nologinhaproxy/*创建配置文件*/mkdir/etc/haproxyvi/etc/haproxy/haproxy.cfg====global#设置日志log127.0.0.1local3infochroot/usr/local/haproxy#用户和用户groupuserhaproxygrouphaproxy#Daemonstartdaemon#最大连接数maxconn4000listenrabbitmq_local_clusterbind0.0.0.0:5672#配置TCP模式modetcpoptiontcplog#简单轮询平衡roundrobin  #rabbitmq集群节点配置  #inter2000health检测间隔为2秒  #rise3检测多少次才认为正常  #fall3检测失败多少次才认为不可用  #weight30weight  #需要转发ip和端口服务器rabbitmq-node1192.168.41.140:5672检查inter2000rise3fall3weight30serverrabbitmq-node2192.168.41.141:5672检查inter2000rise3fall3weight30serverrabbitmq-node3192.168.41.142:5672检查inter2000rise3fall3weight30#配置haproxyweb监控,查看统计listenprivate_monitoringbind:1080modehttpoptionhttplogstatsenable#设置haproxy监控地址为http://localhost:8100/statsstatsuri/statsstatsrefresh30s#添加用户名和密码认证statsauthadmin:admin/*Editrsyslog*/vi/etc/rsyslog.conf//去掉#$ModLoadimudp$UDPServerRun514//添加下面一行保存local3.*/var/log/haproxy.log//重启rsyslogsystemctlrestartrsyslogstarthaproxyservicehaproxystart/*openport1080*/firewall-cmd--zone=public--add-port=1080/tcp--permanentfirewall-cmd--reload访问http://ip:1080/stats,进入账号密码adminadmin如下图,使用我们上一节搭建的微服务链接到HaProxy。这是配置信息。:'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集群监控界面,已经有一个connection,一个queue和一个Chanel查看queue,发现名字和我们配置的一样。链接成功启动三个相同的微服务后,发现链接变成了3,消费者也变成了3。至此rabbitmq集群和HaProxy负载均衡搭建完成。如果各位看官对作者的文章感兴趣的话,希望关注作者的个人公众号,我们一起探讨。如果有什么不对的地方,希望大家指正。作者深感荣幸。最后,感谢您的阅读。