• 多节点集群思路


    情况
    在实际的项目实践中,绝大多数情况不会是单节点运行程序+数据库+其他,而会考虑部署一套公共资源,提供项目所需的数据库,中间件等等。

    思路
    如果有多节点的情况,最终实现的目的就是:Ha和Upstream,简而言之就是实现主备的功能加上负载均衡的功能。市面上就提供了很典型的这样的集群模式keepalived+haproxy+中间件。keepalived保证主从服务器的可用性,一旦主服务器出现问题,就会自动切换到备用服务器上;haproxy是做负载均衡转发,可以通过haproxy转发到实际后端服务,灵活提高应该的负载能力。

    实例
    keepalivd虚拟出对外的IP对应主备下的haproxy服务,只提供一个对外的统一IP地址;haproxy转发到实际的应用下面;本文以rabbitmq为实例,采用镜像集群模式搭建一套完整的rabbitmq集群。
    keepalived—192.168.7.60
    haproxy主从—192.168.7.59 192.168.7.58
    rabbitmq—192.168.7.59 192.168.7.58

    keepalived
    keepalived的搭建和配置可以参考传送门

    haproxy
    haproxy配置是以TCP四层协议来转发端口

    frontend mq
    bind 0.0.0.0:35672
    mode tcp
    default_backend tcp_mq
    backend tcp_mq
    mode tcp
    balance roundrobin
    server node-7 192.168.7.59:5672 check inter 2000 rise 3 fall 3 weight 30
    server node-8 192.168.7.58:5672 check inter 2000 rise 3 fall 3 weight 30

    rabbitmq
    有四个点需要特别注意:
    1.需要先选择一个主节点,拷贝/var/lib/rabbitmq/.erlang.cookie隐藏文件到对应目录下,保证集群cookie值的一致性。
    2.主节点, 后台启动,并启动应用,然后查看集群状态。

    rabbitmq-server -detached
    rabbitmqctl start_app
    rabbitmqctl cluster_status

    3.从节点同样需要先后台启动后,先关闭应用,加入集群后,再开启应用

    rabbitmq-server -detached
    rabbitmqctl stop_app
    rabbitmqctl join_cluster --ram rabbit@master主机名称
    rabbitmqctl start_app

    4.完成以上操作后,再执行镜像模式的命令,完成集群配置

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

    补充:可以开启rabbitmq的web界面管理,新增用户后查看集群的运行状态

    rabbitmq-plugins enable rabbitmq_management
    rabbitmqctl add_user admin admin
    rabbitmqctl set_user_tags admin administrator
    rabbitmqctl add_vhost admin
    rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"
    rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

  • 相关阅读:
    yii2.0 干货
    VLD opcodes 在线查看
    定长顺序串的实现
    循环队列
    oracle--DG初始化参数
    oracle --工具 ODU
    Oracle RAC 修改SPFILE路径 文件查看
    oracle 错误 ORA-00020问题解析
    oracle 错误 TNS-01190与oracle 登入没反应操作
    Oracle--RMAN Recover 缺失的归档操作
  • 原文地址:https://www.cnblogs.com/zhouzhifei/p/13963647.html
Copyright © 2020-2023  润新知