<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          高可用服務(wù)之Keepalived高可用LVS集群

          共 5486字,需瀏覽 11分鐘

           ·

          2020-09-16 07:35

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          ? 作者?|??Linux-1874

          來源 |? urlify.cn/JN7vim

          66套java從入門到精通實(shí)戰(zhàn)課程分享

          我們知道一個(gè)服務(wù)通常是以一個(gè)套接字形式對(duì)外提供服務(wù),所謂套接字就是ip+端口;前面的博客中我們主要聊到了keepalived對(duì)ip地址的高可用,但通常對(duì)ip地址高可用沒有多大實(shí)質(zhì)的作用,重要的是我們高可用的ip地址后端對(duì)應(yīng)的服務(wù)才是根本,這一篇博客主要講怎么利用keepalived高可用LVS集群,生成ipvs規(guī)則,以及對(duì)LVS集群的rs做健康狀態(tài)檢測(cè);

            環(huán)境說明

          名稱ip地址端口
          keepalived-node01(master)192.168.0.41\
          keepalived-node02(backup)192.168.0.42\
          LVS-RS1192.168.0.4380
          LVS-RS2192.168.0.4480
          VIP192.168.0.11180


            準(zhǔn)備LVS集群RS1和RS2

            1、安裝webserver

          1

          yum?install?nginx -y

            提示:rs1和rs2上都要安裝nginx服務(wù),用于后端rs提供的服務(wù);

            2、提供測(cè)試頁

            3、啟動(dòng)rs1和rs2上的nginx服務(wù)

            4、編寫修改內(nèi)核參數(shù),并配置vip給RS1和RS2的腳本

          #/bin/bash
          #
          vip='192.168.0.111'
          mask='255.255.255.255'
          interface='lo:0'
          ?
          case?$1?in
          start)
          ????????echo?2?>?/proc/sys/net/ipv4/conf/all/arp_announce
          ????????echo?2?>?/proc/sys/net/ipv4/conf/lo/arp_announce
          ????????echo?1?>?/proc/sys/net/ipv4/conf/all/arp_ignore
          ????????echo?1?>?/proc/sys/net/ipv4/conf/lo/arp_ignore
          ????????ifconfig?$interface??$vip?netmask?$mask?broadcast?$vip?up
          ????????route?add?-host?$vip?dev?$interface
          ????????;;
          stop)
          ????????ifconfig?$interface?down
          ????????echo?0?>/proc/sys/net/ipv4/conf/all/arp_announce
          ????????echo?0?>/proc/sys/net/ipv4/conf/lo/arp_announce
          ????????echo?0?>/proc/sys/net/ipv4/conf/all/arp_ignore
          ????????echo?0?>/proc/sys/net/ipv4/conf/lo/arp_ignore
          ????????;;
          *)
          ????????echo?"Usage:bash?$0?start|stop"
          ????????exit?1
          ????????;;
          esac

            提示:以上腳本主要實(shí)現(xiàn)了兩個(gè)參數(shù),給定start參數(shù)就把對(duì)應(yīng)的內(nèi)核參數(shù)修改以后,并把vip配置到指定的接口;給stop參數(shù)就把vip從指定的端口上刪除,并還原內(nèi)核參數(shù)的設(shè)定;

            在rs1和rs2上執(zhí)行設(shè)置內(nèi)核參數(shù)的腳本

            提示:到此后端兩個(gè)RS的環(huán)境就準(zhǔn)備好了;

            配置keepalived,生成lvs規(guī)則

            完整的配置

          [root@node01?~]#?cat?/etc/keepalived/keepalived.conf
          !?Configuration?File?for?keepalived

          global_defs?{
          ???notification_email?{
          ????????root@localhost
          ???}
          ???notification_email_from?node01_keepalived@localhost
          ???smtp_server?127.0.0.1
          ???smtp_connect_timeout?30
          ???router_id?node01
          ???vrrp_skip_check_adv_addr
          ???vrrp_strict
          ???vrrp_garp_interval?0
          ???vrrp_gna_interval?0
          ???vrrp_mcast_group4?224.0.12.132
          }

          vrrp_instance?VI_1?{
          ????state?MASTER
          ????interface?ens33
          ????virtual_router_id?51
          ????priority?100
          ????advert_int?1
          ????authentication?{
          ????????auth_type?PASS
          ????????auth_pass?12345678
          ????}
          ????virtual_ipaddress?{
          ????????192.168.0.111/24?brd?192.168.0.255?dev?ens33?label?ens33:1
          ????}
          ????notify_master?"/etc/keepalived/notify.sh?master"
          ????notify_backup?"/etc/keepalived/notify.sh?backup"
          ????notify_fault??"/etc/keepalived/notify.sh?fault"
          }

          virtual_server?192.168.0.111?80?{
          ????????delay_loop?3
          ????????lb_algo?wrr
          ????????lb_kind?DR
          ????????protocol?TCP
          ????????sorry_server?127.0.0.1?80

          ????????real_server?192.168.0.43?80?{
          ????????????????weight?1
          ????????????????nb_get_retry?2
          ????????????????delay_before_retry?2
          ????????????????connect_timeout?30
          ????????????????HTTP_GET?{
          ????????????????????url?{
          ????????????????????path?/index.html
          ????????????????????status_code?200
          ????????????????????}
          ????????????????}
          ????????}
          ????????real_server?192.168.0.44?80?{
          ????????????????weight?1
          ????????????????nb_get_retry?2
          ????????????????delay_before_retry?2
          ????????????????connect_timeout?30
          ????????????????HTTP_GET?{
          ????????????????????url?{
          ????????????????????path?/index.html
          ????????????????????status_code?200
          ????????????????????}
          ????????????????}
          ????????}
          }

          [root@node01?~]#

            提示:virtual_server用于定義LVS對(duì)外集群ip地址和端口(vip),用大括號(hào)括起來,其中delay_loop用于指定對(duì)后端rs做健康狀態(tài)檢查的時(shí)間間隔;lb_algo/lvs_sched用于指定lvs的調(diào)度算法,常用的算法有rr,wrr,lc,wlc,lblc,sh,dh;lb_kind/lvs_method用于指定lvs集群的類型,常用的類型有DR,NAT,TUN,需注意這里的類型的值必須大寫,否則服務(wù)有異常;有關(guān)LVS集群類型的相關(guān)說明請(qǐng)參考https://www.cnblogs.com/qiuhom-1874/p/12327506.html;protocol用于指定4層協(xié)議,常用的4層協(xié)議有TCP ,UDP,SCTP,需注意這里的值必須大寫;sorry_server用于指定,當(dāng)后端RS都宕機(jī)情況下,臨時(shí)對(duì)用戶說sorry的服務(wù)器地址和端口;real_server:用來定義后端RS的相關(guān)配置,其中weight用于指定當(dāng)前rs的權(quán)重,nb_get_retry用指定對(duì)rs檢測(cè)的重試次數(shù),如果在指定的次數(shù)上都監(jiān)測(cè)失敗就標(biāo)記該RS為下線狀態(tài),并從當(dāng)前集群中下線;delay_before_retry用于指定重試之前延遲的時(shí)間;connect_timeout用于指定對(duì)rs檢測(cè)的超時(shí)時(shí)長(zhǎng);HTTP_GET 用于配置對(duì)rs的檢查方法,HTTP_GET表示應(yīng)用層http檢測(cè),其中path用于指定檢測(cè)到uri,status_code用于指定對(duì)指定URI檢測(cè)到狀態(tài)碼,通常為200;以上virtual_server的配置在node02上也是相同的配置;

            安裝sorryserver,并配置測(cè)試頁面

            啟動(dòng)keepalived

            提示:到此基于keepalived高可用LVS集群就配置完成了;

            驗(yàn)證:用瀏覽器對(duì)VIP訪問,看看是否能夠訪問到后端RS提供的頁面?

            提示:我們用瀏覽器訪問VIP并沒有訪問到后端的rs提供的頁面;其中的原因是我們?cè)谂渲胟eepalived時(shí),開啟了嚴(yán)格遵守vrrp協(xié)議,所以啟動(dòng)keepalived它默認(rèn)會(huì)自動(dòng)生成iptables規(guī)則,禁止任何地址訪問VIP;

            提示:解決辦法用iptables -F清空iptables規(guī)則;這種清空iptables規(guī)則的方式只是臨時(shí)的方式,重啟以后,或者vip飄逸后,對(duì)應(yīng)的規(guī)則又會(huì)生成,永久解決辦法是在keepalived的配置文件,禁用它自動(dòng)生成iptabels規(guī)則;

            提示:在/etc/keepalived/keepalived.conf的global_defs中加上vrrp_iptables這個(gè)配置,這個(gè)配置表示禁用自動(dòng)生成iptables規(guī)則;當(dāng)然我們也可配置不嚴(yán)格遵守vrrp協(xié)議,把vrrp_strict去掉也行;選擇其中一種方式即可;

            驗(yàn)證:重啟keepalived,看看對(duì)應(yīng)iptables規(guī)則是否還會(huì)生成?

            提示:可以看到現(xiàn)在vip所在節(jié)點(diǎn)的iptables規(guī)則就沒有在自動(dòng)生成了,對(duì)于node02也是相同的配置,重啟keepalived即可解決自動(dòng)生成iptables規(guī)則的問題;

            現(xiàn)在在用瀏覽器訪問vip,看看是否能夠訪問到后端RS提供的頁面?

            提示:可以看到我們?cè)跒g覽器上訪問VIP是可以正常訪問到后端rs提供的頁面;

            驗(yàn)證:把node01上的keepalived停掉,看看node02是否會(huì)自動(dòng)將vip配置上對(duì)應(yīng)的接口?用瀏覽器是否還會(huì)訪問到rs提供的頁面呢?

            提示:可以看到當(dāng)node01的keepalived宕機(jī)以后,對(duì)應(yīng)vip會(huì)自動(dòng)飄逸到node02上去,并且在客戶端訪問VIP幾乎不受影響;

            驗(yàn)證:在node01上查看ipvs規(guī)則,看看是否都生成了ipvs規(guī)則呢?

            提示:可以看到node01上并沒有生成ipvs規(guī)則,原因是keepalived停掉了,對(duì)應(yīng)的ipvs規(guī)則也就刪除了;node02上的keepalived是活躍狀態(tài),所以對(duì)應(yīng)ipvs規(guī)則也是有keepalived自動(dòng)生成;

            驗(yàn)證:把rs1的web服務(wù)停掉,看看keepalived是否會(huì)檢測(cè)到rs1不再線,從而把rs1自動(dòng)從集群踢出去呢?

            提示:可以看到當(dāng)rs1故障以后,keepalived會(huì)檢測(cè)到rs1故障,然后把rs1從集群中提出去,所以我們?cè)趇pvs規(guī)則表中就沒有rs1;

            驗(yàn)證:把rs2停掉,看看對(duì)應(yīng)的sorryserver是否會(huì)被激活?

            提示:可以看到把rs2停掉以后,對(duì)應(yīng)ipvs規(guī)則表中就沒有RS2,并且它會(huì)把我們之前配置的sorryserver 的地址和端口配置上;

            驗(yàn)證:用瀏覽器訪問VIP看看對(duì)應(yīng)相應(yīng)的內(nèi)容是否是vip所在節(jié)點(diǎn)的sorryserver提供的頁面呢?

            提示:可以看到當(dāng)rs都宕機(jī)以后,再次訪問VIP就會(huì)響應(yīng)我們之前在配置文件中提供的sorryserver的頁面;

            驗(yàn)證:?jiǎn)?dòng)rs1或rs2看看對(duì)應(yīng)sorryserver是否會(huì)下線呢?

            提示:可以看到當(dāng)rs2恢復(fù)以后,對(duì)應(yīng)的sorryserver就從集群下線;

            到此基于keepalived高可用LVS集群的配置,測(cè)試就結(jié)束了;




          ??? ?



          感謝點(diǎn)贊支持下哈?

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女视频一区二区 | 国产性情网站在线看 | 免费一级特黄毛大片 | 午夜黄色动漫 | 黄片免费观看永久 |