saltstack之keepalived的安装配置
?
使用saltstack編譯安裝keepalived:
創(chuàng)建相應的目錄,并在目錄下創(chuàng)建相應的sls配置文件
[root@node1 ~]# mkdir /srv/salt/prod/keepalived [root@node1 ~]# mkdir /srv/salt/prod/keepalived/files?1、使用saltstack進行編譯安裝keepalived
1.1將下載好的keepalived源碼包放置在keepalived目錄下面的files目錄中(files目錄提供需要用的源碼包,文件等)
[root@node1 etc]# pwd /usr/local/src/keepalived-1.3.6/keepalived/etc [root@node1 etc]# cp keepalived/keepalived.conf /srv/salt/prod/keepalived/files/ [root@node1 etc]# cp init.d/keepalived /srv/salt/prod/keepalived/files/keepalived.init [root@node1 sysconfig]# pwd /usr/local/src/keepalived-1.3.6/keepalived/etc/sysconfig [root@node1 sysconfig]# cp keepalived /srv/salt/prod/keepalived/files/keepalived.sysconfig?查看files目錄下面文件:
[root@node1 keepalived]# ll files/ total 696 -rw-r--r-- 1 root root 702570 Oct 10 22:21 keepalived-1.3.6.tar.gz -rwxr-xr-x 1 root root 1335 Oct 10 22:17 keepalived.init -rw-r--r-- 1 root root 667 Oct 10 22:28 keepalived.sysconfig?1.2haproxy的源碼包和啟動腳本準備好后,開始進行安裝keepalived
[root@node1 keepalived]# pwd /srv/salt/prod/keepalived [root@node1 keepalived]# cat install.sls include:- pkg.pkg-initkeepalived-install:file.managed:- name: /usr/local/src/keepalived-1.3.6.tar.gz- source: salt://keepalived/files/keepalived-1.3.6.tar.gz- user: root- group: root- mode: 755cmd.run:- name: cd /usr/local/src/ && tar xf keepalived-1.3.6.tar.gz && cd keepalived-1.3.6 && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install- unless: test -d /usr/local/keepalived- require:- pkg: pkg-init- file: keepalived-installkeepalived-init:file.managed:- name: /etc/init.d/keepalived- source: salt://keepalived/files/keepalived.init- user: root- group: root- mode: 755cmd.run:- name: chkconfig --add keepalived- unless: chkconfig --list|grep keepalived- require:- file: /etc/init.d/keepalived/etc/sysconfig/keepalived:file.managed:- source: salt://keepalived/files/keepalived.sysconfig- user: root- group: root- mode: 644/etc/keepalived:file.directory:- user: root- group: root- mode: 755?總結(jié)上面配置文件包括:1、include進來編譯環(huán)境 2、編譯安裝keepalived 3、添加keepalived腳本文件,并添加到系統(tǒng)服務中 4、復制keepalived.sysconfig文件 5、創(chuàng)建keepalived配置文件目錄
執(zhí)行install.sls文件,安裝keepalived:
[root@node1 keepalived]# salt 'node1' state.sls keepalived.install saltenv=prod?3、安裝完keepalived后,并且keepalived已經(jīng)有了啟動腳本,接下來需要給keepalived提供配置文件,最后將keepalived服務開啟,由于根據(jù)業(yè)務需求的不同,可能用到的keepalived的配置文件會有區(qū)別,
所以這里將配置文件與keepalived的安裝分隔開進行狀態(tài)管理配置,以后minion的keepalived可以根據(jù)配置文件的不同而提供安裝
[root@node1 cluster]# pwd /srv/salt/prod/cluster [root@node1 cluster]# cat haproxy-outside-keepalived.sls haproxy與keepalived結(jié)合使用的高可用 include:- keepalived.installkeepalived-service:file.managed:- name: /etc/keepalived/keepalived.conf- source: salt://cluster/files/haproxy-outside-keepalived.conf- user: root- group: root- mode: 644- template: jinja jinja模板調(diào)用,使用變量{% if grains['fqdn'] == 'node1' %} 基于節(jié)點的fqdn信息來賦予變量值- ROUTEID: haproxy_node1- STATEID: MASTER- PRIORITYID: 150{% elif grains['fqdn'] == 'node2' %}- ROUTEID: haproxy_node2- STATEID: BACKUP- PRIORITYID: 100{% endif %}service.running:- name: keepalived- enable: True- reload: True- watch:- file: keepalived-service? 總結(jié)上述配置文件內(nèi)容:1、include進來keepalived的安裝 2、給各節(jié)點提供不同的配置文件,用到了jinja模板調(diào)用grains 3、開啟keepalived服務,并開啟自啟動
最后將keepalived項目添加到top.sls文件中:
[root@node1 base]# cat top.sls base:'*':- init.env_initprod:'node1':- cluster.haproxy-outside- cluster.haproxy-outside-keepalived?整個keepalived項目構(gòu)架圖:
[root@node1 keepalived]# tree . ├── files │?? ├── keepalived-1.3.6.tar.gz │?? ├── keepalived.init │?? └── keepalived.sysconfig └── install.sls1 directory, 4 files [root@node1 keepalived]# cd ../cluster/ [root@node1 cluster]# tree . ├── files │?? ├── haproxy-outside.cfg │?? └── haproxy-outside-keepalived.conf ├── haproxy-outside-keepalived.sls └── haproxy-outside.sls?node1節(jié)點安裝沒有問題,那么更改top.sls中節(jié)點設置,將node2節(jié)點也給添加上:
[root@node1 base]# cat top.sls base:'*':- init.env_initprod:'*': 只有兩個節(jié)點,所以這里*代替了- cluster.haproxy-outside- cluster.haproxy-outside-keepalived?執(zhí)行狀態(tài)配置文件:
[root@node1 base]# salt '*' state.highstate?查看node2狀態(tài):
[root@node2 ~]# netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.44.10:80 0.0.0.0:* LISTEN 16791/haproxy tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1279/sshd tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 16791/haproxy tcp 0 0 :::8080 :::* LISTEN 14351/httpd tcp 0 0 :::22 :::* LISTEN 1279/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 1106/dhclient?可以看見haproxy已經(jīng)監(jiān)聽起來了,監(jiān)聽在了一個不是自己實際ip的地址上
查看node1的vip信息:
[root@node1 files]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:86:2C:63 inet addr:192.168.44.134 Bcast:192.168.44.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe86:2c63/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:230013 errors:0 dropped:0 overruns:0 frame:0TX packets:172530 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:130350592 (124.3 MiB) TX bytes:19244347 (18.3 MiB)eth0:0 Link encap:Ethernet HWaddr 00:0C:29:86:2C:63 inet addr:192.168.44.10 Bcast:0.0.0.0 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:145196 errors:0 dropped:0 overruns:0 frame:0TX packets:145196 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:12285984 (11.7 MiB) TX bytes:12285984 (11.7 MiB)?可以看見eth0:0就是vip,手動將keepalived停止,查看vip是否漂移到nide2?
[root@node1 files]# /etc/init.d/keepalived stop Stopping keepalived: [ OK ]?查看node2狀態(tài):
[root@node2 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:34:32:CB inet addr:192.168.44.135 Bcast:192.168.44.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe34:32cb/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:494815 errors:0 dropped:0 overruns:0 frame:0TX packets:357301 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:250265303 (238.6 MiB) TX bytes:98088504 (93.5 MiB)eth0:0 Link encap:Ethernet HWaddr 00:0C:29:34:32:CB inet addr:192.168.44.10 Bcast:0.0.0.0 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:2953 errors:0 dropped:0 overruns:0 frame:0TX packets:2953 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:1272983 (1.2 MiB) TX bytes:1272983 (1.2 MiB)?于是haproxy結(jié)合keepalived的高可用基于saltstack安裝成功,下面為haproxy和keepalived的簡單配置文件:
haproxy配置文件:
[root@node1 files]# pwd /srv/salt/prod/cluster/files [root@node1 files]# cat haproxy-outside.cfg # # This is a sample configuration. It illustrates how to separate static objects # traffic from dynamic traffic, and how to dynamically regulate the server load. # # It listens on 192.168.1.10:80, and directs all requests for Host 'img' or # URIs starting with /img or /css to a dedicated group of servers. URIs # starting with /admin/stats deliver the stats page. #globalmaxconn 10000stats socket /var/run/haproxy.stat mode 600 level adminlog 127.0.0.1 local0uid 200gid 200chroot /var/emptydaemondefaultsmode httptimeout connect 5000mstimeout client 50000mstimeout server 50000ms# The public 'www' address in the DMZ frontend webserverbind 192.168.44.10:80default_backend web#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pemmode httplisten base_statsbind *:8090stats enablestats hide-versionstats uri /haproxy?statsstats realm "haproxy statistics"stats auth wadeson:redhat# The static backend backend for 'Host: img', /img and /css. backend webbalance roundrobinretries 2server web1 192.168.44.134:8080 check inter 1000server web2 192.168.44.135:8080 check inter 1000?keepalived配置文件:
[root@node1 files]# cat haproxy-outside-keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {json_hc@163.com}notification_email_from json_hc@163.comsmtp_server smtp.163.comsmtp_connect_timeout 30router_id {{ ROUTEID }} }vrrp_instance VI_1 {state {{ STATEID }}interface eth0virtual_router_id 51priority {{ PRIORITYID }}advert_int 1authentication {auth_type PASSauth_pass password}virtual_ipaddress {192.168.44.10/24 dev eth0 label eth0:0} }?查看高可用的負載效果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/jsonhc/p/7649651.html
總結(jié)
以上是生活随笔為你收集整理的saltstack之keepalived的安装配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 获得当前日期+时间
- 下一篇: (转)Elasticsearch NoN