ansible實現nginx雙主模式反代,keepalived高可用,memcached緩存
ansible自動化運維工具配置ngnix前端反代到後端真實機,並設置keepalived高可用,在後端一臺真實主機上配置httpd,mysql,php-fpm;設置memcached緩存服務器在這臺真實主機上;(因為本人電腦配置問題,無法開啟那麽多虛擬機,所以就簡單構建了一下)
IP配置:
Directory1(MASTER):
eno16777736:172.16.72.5
eno16777736:0:172.16.72.1(虛擬VIP)
eno33554976:192.168.72.1
eno33554976:0:192.168.72.5(虛擬DIP)
Directory2(BACKUP):
eno16777736:172.16.72.4
eno33554976:192.168.72.2
RS1:
eno16777736:192.168.72.3
①安裝ansible
聯網安裝即可
②配置ansible的hosts inventory
對配置文件/etc/ansible/hosts
nginxproxy是作為反代服務器高可用的兩臺主機的真實IP,後端的參數是作為變量存在的,後面會 講到;
rs是作為後端真實主機的IP聲明,這樣ansible才能針對不同的主機做出不同的配置操作;
③設置角色roles:
角色roles需要在/etc/ansible/roles下創建對應的角色目錄,如
創建的角色需要在每個目錄下對應創建該角色的tasks(任務),handlers,templates等需要使用的 目錄;
如
像tasks,handlers,vars這樣的目錄下都需要有一個主配置文件main.yml,用於設置任務,定義 配置文件被修改後的處理操作和定義變量;templates目錄則是用於存放被template模塊傳送的文件, 需以j2結尾的文件;files目錄則是用於存放copy模塊復制的文件;
④nginx角色創建:
第一項任務:傳送nginx相關yum源;(再次並沒有直接安裝nginx,因為網絡並沒有連接,使用之 前安裝denginx進行操作)
第二項任務:傳送配置好的nginx.conf文件,該文件存放於/etc/ansible/roles/nginx/templates 下;
配置好的nginx.conf:
第三項任務:配置nginx反代服務器的ip_forward核心參數;可以直接傳送配置文件永久保存;
⑤keepalived角色創建:
第一項任務:安裝keepalived,使用yum模塊安裝;
第二項任務:傳送事先配置好的keepalived配置文件;當配置文件被修改後,通過notify轉到 handlers目錄下的main.yml執行重啟服務操作;對配置文件中設置變量參數如:
變量的value在hosts inventory處獲取,也可以直接在該角色的vars目錄下創建main.yml中寫入;
handlers中的配置:
第三項任務:啟動keepalived服務;
nginx下實現keepalived高可用雙主模式:
⑥後端真實服務器apache配置
第一項任務:安裝httpd;
第二項任務:傳送配置好的httpd配置文件;若配置文件改動過則通過notify調用handlers重啟服 務;
配置好的httpd.conf:
handlers中的配置:
第三項任務:對httpd服務進行控制,httpd_status變量默認是啟動,可以在命令行中通過-e選項 設置變量;
vars目錄中的配置:
⑦後端真實服務器mysql配置:
第一項任務:安裝mariadb,對於centos7;使用when進行驗證,判斷主機版本號;
第二項任務:安裝mysqld,對於centos6;使用when進行驗證,判斷主機版本號;
第三項任務與第四項任務都是啟動相對應的mysql;
vars配置文件設置:
⑧後端真實服務器php配置:
第一項任務:安裝php-fpm;
第二項任務:對php-fpm服務的操作;
vars目錄中的配置:
⑨後端真實服務器memcached配置:
第一項任務:安裝memcached;
第二項任務:安裝memcached關於php緩存所需要的軟件php-prcl-memcache;
第三項任務:傳送安裝memcached後需要進行php緩存的php配置文件;(針對於php-fpm)配置文件若 修改過則通過notify轉到handlers;
handlers:
vars:
⑩將phpmyadmin軟件包傳送過去
放入files目錄下;
然後在真實服務器處進行解壓;
最後執行
#ansible rs -m shell -a "route add default gw 192.168.72.5"
讓後端服務器的輸出轉到虛擬的DIP上;
輸出結果:
ansible實現nginx雙主模式反代,keepalived高可用,memcached緩存