天天看點

Ansible-實戰指南-LNMP環境部署主機規劃系統架構實戰項目GitHub位址項目任務分解項目編寫與後續驗證步驟

主機規劃

序号 主機名稱 作業系統版本 内網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
           

系統架構

Ansible-實戰指南-LNMP環境部署主機規劃系統架構實戰項目GitHub位址項目任務分解項目編寫與後續驗證步驟

實戰項目GitHub位址

該項目已經放在了GitHub上,位址如下:

https://github.com/zhanglianghhh/ansible-example-lnmp
           

如需要請自行通路或下載下傳。

Ansible-實戰指南-LNMP環境部署主機規劃系統架構實戰項目GitHub位址項目任務分解項目編寫與後續驗證步驟

項目任務分解

擷取需求并拿到機器的時候,這時需要我們做如下分析:

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^-) !

Ansible-實戰指南-LNMP環境部署主機規劃系統架構實戰項目GitHub位址項目任務分解項目編寫與後續驗證步驟