zoukankan      html  css  js  c++  java
  • Openstack的HA解决方案【haproxy和keepalived】

    1. 安装haproxy,keepalived, httpd,3台机器一致。

    yum install haproxy keepalived httpd -y
    

    2. 修改httpd的默认页面. 在/var/www/error/noindex.html中修改,

    <div class="content-middle">
                                    <p>163:This page is
    

    其实随便一个地方添加上服务的httpd的IP即可,并且修改httpd端口为8080. 测试页面: 20140818143109.jpg 3台机器都一样,页面分别展示不同的IP地址。

    3. 修改163的haproxy.

    backend app
        balance     roundrobin
        server  app1 172.17.44.163:8080 check
        server  app2 172.17.44.164:8080 check
        server  app3 172.17.44.164:8080 check
    

    将IP和端口修改.

    4. 启动163的haproxy。 访问,172.17.44.163.5000。多次刷新,可以看到前面类似的页面IP地址变化会有164,165.但是图片不会正常展示,因为我们没有配置图片的请求。

    5.164.165都配置上haproxy,执行同163一样的操作。

    6. keepalived的作用介绍

     keepalived可以创建出一个虚拟IP(vip,这里的V是virtual),可以heartbeat各个机器的服务
    

    7.设置keepalived的虚拟IP

     在keepalived的配置路径/etc/keepalived/下配置
    
    ! Configuration File for keepalived
    
    global_defs {
       router_id NODE1
       notification_email {
            root@localhost
       }
       notification_email_from root@local host
       smtp_server localhost
       smtp_connect_timeout 30
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.17.44.170
        }
    }
    

    这里我们设置的是163这台机器作为Master,他的优先级别是100,虚拟IP是172.17.44.170,将这个文件复制到164,165,修改state 为BACKUP,优先级为99或更低。

    全部使用service keepalived start.

    在/var/log/message查看日志。

    在163查看IP地址是否获取到:

    [root@ha1 keepalived]# ip addr list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:e6:aa:16 brd ff:ff:ff:ff:ff:ff
        inet 172.17.44.163/24 brd 172.17.44.255 scope global eth0
        inet 172.17.44.170/32 scope global eth0
        inet6 fe80::20c:29ff:fee6:aa16/64 scope link 
           valid_lft forever preferred_lft forever
    [root@ha1 keepalived]#
    

    可以看到eth0还有一个IP是170.本地开发环境并且能ping通,表示MASTER的虚拟IP获取成功。 reboot163服务器,立刻重新ping,172.17.44.170,还是能通,因为该170IP已经被172.17.44.164接管。

    8. 结合前面的haproxy,访问172.17.44.170:5000,可以看到现在这个服务已经有了高可用性(关闭任何一台机器,服务正常),高并发(多台服务器处理相同请求)的雏形了

  • 相关阅读:
    jquery获取select选中的文本值
    Nginx实战入门教程
    【分享】Jenkins自动化部署全套视频教程
    Jenkins自动化部署入门详细教程
    【分享】nginx负载均衡全套视频教程
    IT从业者疫情之下出路何在
    jmeter控制器(四)
    jmeter控制器(三)
    复述记忆法的初步学习总结
    raspberry-gpio-python(树莓派GPIO与Python编程)
  • 原文地址:https://www.cnblogs.com/CLTANG/p/4332579.html
Copyright © 2011-2022 走看看