主機規劃
序号 | 主機名稱 | 作業系統版本 | 内網IP | 外網IP(模拟) | 安裝軟體 |
---|---|---|---|---|---|
對外提供通路 | CentOS7.5 | 10.0.0.170 | keepalived【無主機,隻有一個虛拟VIP】 | ||
1 | ansi-haproxy01 | CentOS7.5 | 172.16.1.181 | 10.0.0.181 | zabbix-agent、haproxy |
2 | ansi-haproxy02 | CentOS7.5 | 172.16.1.182 | 10.0.0.182 | zabbix-agent、haproxy |
3 | ansi-web01 | CentOS7.5 | 172.16.1.183 | 10.0.0.183 | zabbix-agent、nginx+php、mysql(master) |
4 | ansi-web02 | CentOS7.5 | 172.16.1.184 | 10.0.0.184 | zabbix-agent、nginx+php、mysql(slave) |
5 | ansi-web03 | CentOS7.5 | 172.16.1.185 | 10.0.0.185 | zabbix-agent、nginx+php、mysql(slave)、memcached |
6 | ansi-manager | CentOS7.5 | 172.16.1.180 | 10.0.0.180 | Ansible、zabbix-server、zabbix-agent、mariadb「zabbix使用」 |
系統初始化:必要的系統初始化
基礎元件包括:zabbix監控,mariadb(用于存放zabbix監控資訊)
業務元件包括:MySQL、memcached、nginx、PHP、haproxy、keepalived
添加使用者賬号
說明:1、 運維人員使用的登入賬号;
2、 所有的業務都放在 /app/ 下「yun使用者的家目錄」,避免業務資料亂放;
3、 該使用者也被 ansible 使用,因為幾乎所有的生産環境都是禁止 root 遠端登入的(是以該 yun 使用者也進行了 sudo 提權)。
# 使用一個專門的使用者,避免直接使用root使用者
# 添加使用者、指定家目錄并指定使用者密碼
# sudo提權
# 讓其它普通使用者可以進入該目錄檢視資訊
useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun
echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
chmod 755 /app/
備注:記得在管理機 172.16.1.180 上實作對其他機器的免密登入。
Ansible 配置清單Inventory
[[email protected] ansible_info]$ cat hosts_key
# 業務元件分組
[manageservers]
172.16.1.180:22
[keepalivedserver]
172.16.1.181
172.16.1.182
[proxyservers]
172.16.1.18[1:2]:22
[webservers]
172.16.1.183 ansible_ssh_port=22
172.16.1.184 ansible_ssh_port=22
172.16.1.185 ansible_ssh_port=22
[memservers]
172.16.1.185
[dbservers]
172.16.1.183
172.16.1.184
172.16.1.185
[dbservers_master]
172.16.1.183
[dbservers_slave]
172.16.1.184
172.16.1.185
# 基礎元件分組
## 資料庫元件分組
[zabbixdbserver]
172.16.1.180
## 基礎業務元件分組
[zabbixserver]
172.16.1.180
系統架構
實戰項目GitHub位址
該項目已經放在了GitHub上,位址如下:
https://github.com/zhanglianghhh/ansible-example-lnmp
如需要請自行通路或下載下傳。
項目任務分解
擷取需求并拿到機器的時候,這時需要我們做如下分析:
1、主機規劃:每台主機用于部署什麼子產品【本文第一節實際已經規劃好了】
2、普通使用者建立與提權:如果機器是公司統一初始化的,那麼可以不建立普通使用者,隻需提權即可。
3、ansible管理機到其他機器的免密登入。
4、具體任務分解:包括機器必要的初始化、基礎元件部署與業務元件部署。如果公司對機器做了統一的初始化,那麼視情況而定。
## 系統初始化
1、基礎鏡像源與epel鏡像源
2、必要的包安裝
3、指定環境變量,如:為history指令添加時間資訊;操作指令記錄到系統日志
4、使用者名、主機添加背景色,用于生産環境,這樣可以減少人為的誤操作
5、别名配置,如:alias grep='grep --color=auto'
6、核心參數修改,生産中視情況而定
7、建立web站點使用者 www。
8、建立必要的目錄,如:軟體包存放目錄,後期運維腳本存放目錄
## 基礎元件部署
1、yum 安裝mariadb,用于存放監控資訊
2、yum 安裝zabbix server
3、yum 安裝zabbix agent
## 業務元件部署
1、MySQL 資料庫部署
2、MySQL 主從實作
3、memcached 部署
4、nginx 部署
5、PHP 部署
6、nginx、PHP整合,nginx、PHP、MySQL整合,nginx、PHP、memcached整合
7、haproxy 部署
8、keepalived 部署
項目編寫與後續驗證步驟
請參見:
https://github.com/zhanglianghhh/ansible-example-lnmp
這裡包含:涉及目錄與檔案說明;服務部署;停止服務【因為是個人電腦通過虛拟機實作的】;服務驗證。
為了避免重複這裡就不單獨說了,參見上面位址即可。
———END——— 如果覺得不錯就關注下呗 (-^O^-) !