{"id":211,"date":"2016-10-26T16:18:04","date_gmt":"2016-10-26T07:18:04","guid":{"rendered":"http:\/\/jook.pe.kr\/?p=211"},"modified":"2016-10-26T16:18:04","modified_gmt":"2016-10-26T07:18:04","slug":"lvs-%ec%84%9c%eb%b2%84-keepalived-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ea%b5%ac%ec%84%b1","status":"publish","type":"post","link":"http:\/\/jook.pe.kr\/?p=211","title":{"rendered":"LVS \uc11c\ubc84 keepalived \uc124\uce58 \ubc0f \uad6c\uc131"},"content":{"rendered":"<p><strong>LVS \uc11c\ubc84 keepalived \uc124\uce58 \ubc0f \uad6c\uc131<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\uc11c\ubc84 \uc815\ubcf4<br \/>\nLVS : 192.168.0.101<br \/>\nvip : 192.168.0.100<br \/>\nwww1 : 192.168.0.102<br \/>\nwww2 : 192.168.0.103<br \/>\nDB : 192.168.0.104<br \/>\n1. \/etc\/sysctl.conf \uc5d0\uc11c net.ipv4.ip_forward = 1\ub85c \uc218\uc815 \ud6c4 \uc801\uc6a9<br \/>\nsysctl -p<br \/>\n2. ipvsadm \uc124\uce58<br \/>\nyum install -y ipvsadm<br \/>\n3. keepalived \uc555\ucd95\ud574\uc81c \ubc0f \uc124\uce58<\/p>\n<p>[root@localhost ~ ]# tar xvzfp keepalived-1.2.1.tar.gz<br \/>\n[root@localhost ~ ]# cd keepalived-1.2.1<\/p>\n<p>[root@localhost ~ ]#.\/configure &#8211;with-kernel-dir=\/usr\/src\/kernels\/2.6.18-164.11.1.el5-x86_64<\/p>\n<p>~<\/p>\n<p>Keepalived configuration<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nKeepalived version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : 1.2.1<br \/>\nCompiler\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : gcc<br \/>\nCompiler flags\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : -g -O2 -DETHERTYPE_IPV6=0x86dd<br \/>\nExtra Lib\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : -lpopt -lssl -lcrypto<br \/>\nUse IPVS Framework\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : Yes<br \/>\nIPVS sync daemon support : Yes<br \/>\nUse VRRP Framework\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : Yes<br \/>\nUse Debug flags\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : No<\/p>\n<p>[root@localhost ~ ]# make<\/p>\n<p>~<\/p>\n<p>Building ..\/bin\/genhash<br \/>\nstrip ..\/bin\/genhash<\/p>\n<p>Make complete<br \/>\nmake[1]: Leaving directory `\/root\/src\/keepalived-1.2.1\/genhash&#8217;<\/p>\n<p>Make complete<\/p>\n<p>[root@localhost ~ ]# make install<\/p>\n<p>~<br \/>\nmake[1]: Leaving directory `\/root\/src\/keepalived-1.2.1\/keepalived&#8217;<br \/>\nmake -C genhash install<br \/>\nmake[1]: Entering directory `\/root\/src\/keepalived-1.2.1\/genhash&#8217;<br \/>\ninstall -d \/usr\/local\/bin<br \/>\ninstall -m 755 ..\/bin\/genhash \/usr\/local\/bin\/<br \/>\ninstall -d \/usr\/local\/share\/man\/man1<br \/>\ninstall -m 644 ..\/doc\/man\/man1\/genhash.1 \/usr\/local\/share\/man\/man1<br \/>\nmake[1]: Leaving directory `\/root\/src\/keepalived-1.2.1\/genhash&#8217;<br \/>\n4. keepalived \uc124\uc815\ud30c\uc77c \ubc0f \uc2e4\ud589\ud30c\uc77c symbolic link \uc124\uc815<\/p>\n<p>[root@localhost ~ ]# ln -s \/usr\/local\/etc\/keepalived \/etc\/keepalived<br \/>\n[root@localhost ~ ]# ln -s \/usr\/local\/etc\/rc.d\/init.d\/keepalived \/etc\/rc.d\/init.d\/keepalived<br \/>\n[root@localhost ~ ]# ln -s \/usr\/local\/etc\/sysconfig\/keepalived \/etc\/sysconfig\/keepalived<br \/>\n5. keepalived.conf \uc124\uc815<\/p>\n<p>[root@localhost ~ ]# vi \/etc\/keepalived\/keepalived.conf<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n! Configuration File for keepalived<\/p>\n<p>global_defs {<br \/>\nnotification_email {<br \/>\n<a href=\"mailto:acassen@firewall.loc\">acassen@firewall.loc<\/a><br \/>\n<a href=\"mailto:failover@firewall.loc\">failover@firewall.loc<\/a><br \/>\n<a href=\"mailto:sysadmin@firewall.loc\">sysadmin@firewall.loc<\/a><br \/>\n}<br \/>\nnotification_email_from <a href=\"mailto:Alexandre.Cassen@firewall.loc\">Alexandre.Cassen@firewall.loc<\/a><br \/>\nsmtp_server 192.168.0.101<br \/>\nsmtp_connect_timeout 30<br \/>\nrouter_id LVS_DEVEL<br \/>\n}<\/p>\n<p>vrrp_instance VI_1 {<br \/>\nstate MASTER<br \/>\ninterface eth0<br \/>\ngarp_master_delay 5<br \/>\nvirtual_router_id 51<br \/>\npriority 101<br \/>\nadvert_int 1<br \/>\nauthentication {<br \/>\nauth_type PASS<br \/>\nauth_pass 1111<br \/>\n}<br \/>\nvirtual_ipaddress {<br \/>\n192.168.0.100<br \/>\n}<br \/>\n}<\/p>\n<p>virtual_server 192.168.0.100 80 {<br \/>\ndelay_loop 6<br \/>\nlb_algo lc<br \/>\nlb_kind DR<br \/>\n!\u00a0\u00a0\u00a0 persistence_timeout 50<br \/>\nprotocol TCP<\/p>\n<p>!\u00a0\u00a0\u00a0 sorry_server 192.168.0.101 1358<\/p>\n<p>real_server 192.168.0.102 80 {<br \/>\nweight 1<br \/>\nHTTP_GET {<br \/>\nurl {<br \/>\npath \/<br \/>\ndigest 8b97db165eaf8d8d3a549418aee46738<br \/>\n}<br \/>\nconnect_timeout 3<br \/>\nnb_get_retry 3<br \/>\ndelay_before_retry 3<br \/>\n}<br \/>\n}<\/p>\n<p>real_server 192.168.0.103 80 {<br \/>\nweight 1<br \/>\nHTTP_GET {<br \/>\nurl {<br \/>\npath \/<br \/>\ndigest 78d20f502a13c1b23c2fbc91614cbba3<br \/>\n}<br \/>\nconnect_timeout 3<br \/>\nnb_get_retry 3<br \/>\ndelay_before_retry 3<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>real \uc11c\ubc84\uc5d0 \ub300\ud55c digest \uac12\uc740 \uc544\ub798\uc640 \uac19\uc774 \ud655\uc778\ud55c\ub2e4.<\/p>\n<p>[root@localhost ~ ]# genhash -s 192.168.0.102 -p 80 &#8211;url \/<br \/>\nMD5SUM = 8b97db165eaf8d8d3a549418aee46738<\/p>\n<p>[root@localhost ~ ]# genhash -s 192.168.0.103 -p 80 &#8211;url \/<br \/>\nMD5SUM = 78d20f502a13c1b23c2fbc91614cbba3<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>6. keepalived \ub370\ubaac \uc2e4\ud589<\/p>\n<p>[root@localhost ~ ]# \/etc\/init.d\/keepalived start<br \/>\nStarting keepalived:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [\u00a0 OK\u00a0 ]<\/p>\n<p>\ub370\ubaac \uc2e4\ud589\uc2dc \uc544\ub798\uc640 \uac19\uc774 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0<\/p>\n<p>[root@localhost ~ ]# \/etc\/init.d\/keepalived start<br \/>\nStarting keepalived: \/bin\/bash: keepalived: command not found<br \/>\n[FAILED]<\/p>\n<p>\/etc\/rc.d\/init.d\/keepalived \ud30c\uc77c\uc758 \uc0c1\ub2e8\uc5d0 PATH\ub97c \uc9c0\uc815\ud574 \uc8fc\uac70\ub098, daemon keepalived \ubd80\ubd84\uc5d0 \uc808\ub300\uacbd\ub85c\ub97c \uc0bd\uc785\ud55c\ub2e4.<\/p>\n<p>PATH=\/sbin:\/bin:\/usr\/bin:\/usr\/sbin:\/usr\/local\/sbin<br \/>\nor<br \/>\ndaemon keepalived\u00a0 &#8211;&gt;\u00a0\u00a0 daemon \/usr\/local\/sbin\/keepalived<br \/>\n7. vip \ud655\uc778 \ubc0f ipvsadm -l \ub85c load balancing \uc0c1\ud0dc \ud655\uc778<\/p>\n<p>[root@localhost ~ ]# ip addr<br \/>\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue<br \/>\nlink\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br \/>\ninet 127.0.0.1\/8 scope host lo<br \/>\ninet6 ::1\/128 scope host<br \/>\nvalid_lft forever preferred_lft forever<br \/>\n2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000<br \/>\nlink\/ether 00:30:48:fb:d1:4e brd ff:ff:ff:ff:ff:ff<br \/>\ninet 192.168.0.101\/24 brd 192.168.0.255 scope global eth0<br \/>\ninet 192.168.0.100\/32 scope global eth0<br \/>\ninet6 fe80::230:48ff:fefb:d14e\/64 scope link<br \/>\nvalid_lft forever preferred_lft forever<br \/>\n3: eth1: &lt;BROADCAST,MULTICAST&gt; mtu 1500 qdisc noop qlen 1000<br \/>\nlink\/ether 00:30:48:fb:d1:4f brd ff:ff:ff:ff:ff:ff<br \/>\n4: sit0: &lt;NOARP&gt; mtu 1480 qdisc noop<br \/>\nlink\/sit 0.0.0.0 brd 0.0.0.0<\/p>\n<p>[root@localhost ~ ]# ipvsadm -l<br \/>\nIP Virtual Server version 1.2.1 (size=4096)<br \/>\nProt LocalAddress:Port Scheduler Flags<br \/>\n-&gt; RemoteAddress:Port\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Forward Weight ActiveConn InActConn<br \/>\nTCP\u00a0 192.168.0.100:http lc<br \/>\n-&gt; 192.168.0.102:http\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Route\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0<br \/>\n-&gt; 192.168.0.103:http\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Route\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0<br \/>\n8. real server \ucee4\ub110 \ud30c\ub77c\ubbf8\ud130 \ubcc0\uacbd<\/p>\n<p>[root@localhost ~ ]# vi \/etc\/sysctl.conf<\/p>\n<p>net.ipv4.conf.eth0.arp_ignore = 1<br \/>\nnet.ipv4.conf.eth0.arp_announce = 2<\/p>\n<p>[root@localhost ~ ]# sysctl -p<br \/>\n9. real \uc11c\ubc84\uc5d0 loop back IP \ub4f1\ub85d<\/p>\n<p>[root@localhost ~ ]# ifconfig lo:0 192.168.0.100 netmask 255.255.255.255 broadcast 192.168.0.100 up<\/p>\n<p>\/etc\/rc.local\u00a0\uc5d0 \ucd94\uac00\ud558\uac70\ub098. \/etc\/sysconfig\/network-scripts\/ifcfg-lo:0 \ud30c\uc77c \uc0dd\uc131<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LVS \uc11c\ubc84 keepalived \uc124\uce58 \ubc0f \uad6c\uc131 &nbsp; \uc11c\ubc84 \uc815\ubcf4 LVS : 192.168.0.101 vip : 192.168.0.100 www1 : 192.168.0.102 www2 :<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,7],"tags":[],"_links":{"self":[{"href":"http:\/\/jook.pe.kr\/index.php?rest_route=\/wp\/v2\/posts\/211"}],"collection":[{"href":"http:\/\/jook.pe.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/jook.pe.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/jook.pe.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/jook.pe.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=211"}],"version-history":[{"count":0,"href":"http:\/\/jook.pe.kr\/index.php?rest_route=\/wp\/v2\/posts\/211\/revisions"}],"wp:attachment":[{"href":"http:\/\/jook.pe.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/jook.pe.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=211"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/jook.pe.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}