以前《Saltstack_使用指南》詳細講解了saltstack的使用。那麼從這節開始實戰講解,固然不會再像以前那樣詳細說明了。只是講一些系統規劃之類的信息。python
具體的項目代碼請參見GitHub。linux
該項目已經放在了GitHub上,地址以下:git
https://github.com/zhanglianghhh/salt-example-lnmp
說明:github
上述的salt03-web、salt04-web、salt05-web、salt150-master沒有內網地址。但若是爲了方便省事兒,你也能夠給這些機器添加外網地址,這樣就不須要網關服務器,直接就能夠訪問公網了。web
實現salt03-web、salt04-web、salt05-web、salt150-master經過網關服務器GateWay00,達到訪問公網的目的。數據庫
前提保證上述全部機器內網都是同一網段,相互之間能夠正常通訊。vim
參見博文:《VMware 實現 iptables NAT及端口映射》服務器
網關機器開啓linux的轉發功能架構
1 [root@gateway01 ~]# tail /etc/sysctl.conf # 添加以下內容 2 ………… 3 net.ipv4.ip_forward = 1 4 [root@gateway01 ~]# sysctl -p # 生效
網關機器iptables操做app
1 # 將FORWARD鏈的策略設置爲DROP,這樣作的目的是作到對內網ip的控制,你容許哪個訪問internet就能夠增長一個規則,不在規則中的ip將沒法訪問internet。 2 iptables -P FORWARD DROP 3 # 這條規則規定容許任何地址到任何地址的確認包和關聯包經過。必定要加這一條,不然你只容許lan IP訪問沒有用。 4 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 5 # 這條規則作了一個SNAT,也就是源地址轉換,未來自172.16.1.0/24的地址轉換爲10.0.0.15。 6 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to 10.0.0.15 7 # 容許該網段訪問 8 iptables -A FORWARD -s 172.16.1.0/24 -j ACCEPT 9 # 保存iptables規則 10 iptables-save > /etc/sysconfig/iptables
最終iptables信息
1 [root@GateWay00 ~]# iptables -nL 2 Chain INPUT (policy ACCEPT) 3 target prot opt source destination 4 5 Chain FORWARD (policy DROP) 6 target prot opt source destination 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 8 ACCEPT all -- 172.16.1.0/24 0.0.0.0/0 9 10 Chain OUTPUT (policy ACCEPT) 11 target prot opt source destination 12 [root@GateWay00 ~]# 13 [root@GateWay00 ~]# iptables -t nat -nL 14 Chain PREROUTING (policy ACCEPT) 15 target prot opt source destination 16 17 Chain INPUT (policy ACCEPT) 18 target prot opt source destination 19 20 Chain OUTPUT (policy ACCEPT) 21 target prot opt source destination 22 23 Chain POSTROUTING (policy ACCEPT) 24 target prot opt source destination 25 SNAT all -- 172.16.1.0/24 0.0.0.0/0 to:10.0.0.15
生產實踐環境中:數據庫監控單獨一套,作到告警去重。
緣由:其餘告警多是由於數據庫有問題形成的。
多數狀況數據庫是單獨部署,能夠不用 salt 進行部署 【若是量大,那麼能夠在第一次進行初始化部署】
本次實戰爲了完整性,對數據庫採起了 salt 方式部署。
salt150-master、salt01-haproxy、salt02-haproxy、salt03-web、salt04-web、salt05-web 機器的hosts文件都追加以下信息。
這樣主機名相互之間能夠解析。
1 [root@salt100 ~]# cat /etc/hosts 2 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 3 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 4 5 172.16.1.111 salt01-haproxy 6 172.16.1.112 salt02-haproxy 7 172.16.1.113 salt03-web 8 172.16.1.114 salt04-web 9 172.16.1.115 salt05-web 10 172.16.1.150 salt150-master
說明:生產優先採用hostname通訊,這樣後期維護、遷移方便。
後期全部的軟件都安裝在 /app/ 目錄下。
1 # 使用一個專門的用戶,避免直接使用root用戶 2 # 添加用戶、指定家目錄、用戶id並指定用戶密碼 3 # sudo提權 4 # 讓其它普通用戶能夠進入該目錄查看信息 5 useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun 6 echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 7 chmod 755 /app/
做用:模擬經過 DNS 解析訪問網站。
1 # 文件路徑:C:\Windows\System32\drivers\etc\hosts 2 # 追加信息以下 3 # SaltStack 實戰 其中salt00-keepalived爲VIP 4 10.0.0.110 salt00-keepalived 5 172.16.1.111 salt01-haproxy 6 172.16.1.112 salt02-haproxy 7 172.16.1.113 salt03-web 8 172.16.1.114 salt04-web 9 172.16.1.115 salt05-web 10 172.16.1.150 salt150-master
具體部署步驟請參見:《Saltstack_使用指南01_部署》
1 [root@salt150-master ~]# vim /etc/salt/master 2 ……………… 3 # Allow minions to push files to the master. This is disabled by default, for 4 # security purposes. 5 #file_recv: False 6 # 容許minion向master推送文件,默認不容許 7 file_recv: True 8 ……………… 9 #file_roots: 10 # base: 11 # - /srv/salt 12 # 添加以下配置 13 file_roots: 14 base: 15 - /srv/salt/base 16 prod: 17 - /srv/salt/prod 18 busi: 19 - /srv/salt/busi 20 [root@salt150-master ~]# systemctl restart salt-master.service # 重啓 master 服務
全部機器都操做
1 [root@salt150-master salt]# pwd 2 /etc/salt 3 [root@salt150-master salt]# vim /etc/salt/minion 4 ……………… 5 # 能夠是IP或者hostname 6 # 若是是hostname那麼必須可以解析【最佳實踐配置爲 主機名】 7 master: salt150-master 8 ……………… 9 # Explicitly declare the id for this minion to use, if left commented the id 10 # will be the hostname as returned by the python call: socket.getfqdn() 11 # Since salt uses detached ids it is possible to run multiple minions on the 12 # same machine but with different ids, this can be useful for salt compute 13 # clusters. 14 # 若是id不配置,那麼默認爲hostname 15 # 若是下次要更改該配置,那麼要把 /etc/salt/minion_id 也給刪除掉,並重啓客戶端【會生成一個新的minion_id】 16 #id: 17 [root@salt150-master ~]# systemctl restart salt-minion.service # 重啓服務
1 # 服務端開機自啓動 2 systemctl enable salt-master.service 3 # minion端開機自啓動 4 systemctl enable salt-minion.service