前兩天帶着大家寫了兩個腳本,難度是遞增的,可以到公眾號腳本命令板塊的an腳本中找到相關例子。其中有些配置是都是我們實際生產生活能用到的。今天我們把難度再上一些!源碼安裝redis5.0.5最新版集群。
聲明:因為腳本需要反復測試,prot 這個變量名寫錯了到后來才發現,但是全局調用的最多的就還是它。所以不改了。就這樣吧!
腳本功能:
利用ansible構建三台物理機組成的redis集群,每台物理機上面都有一主一備兩個實例,故障自動切換並保證redis相關實例開機自啟動。
先說怎么用:
vim /etc/ansible/hosts
波哥配置的是這樣:
咱們項目就是訂好了這個端口號,不要變了。因為有個地方我把端口號寫死了。
再配置:
vim work_yml/redis.yml
這里面按我的例子寫就行了。然后執行
ansible-playbook redis.yml
集群會自動開機啟動
手動關機機命令:
ansible redis -m shell -a "sh /opt/redis/redis_cluster/script/shutdown.sh"
手動開機命令:
ansible redis -m shell -a "sh /opt/redis/redis_cluster/script/start.sh"
登錄集群
redis-cli -h 192.168.1.117 -p 7000
192.168.1.117:7000> cluster nodes
波哥不容易!江湖規矩:人不走空,點贊或者轉發奧!
OK伸手黨可以撤離戰場!!!
################################################
剩下的繼續!上腳本架構圖:
系列文章我們就接着之前的篇幅說,有些步驟我直接不講了。大家可以看到這次波哥創建了很多templates,是的,因為源碼安裝比較復雜,還有很多腳本都在里面配置。但是看字面的意思大家應該能理解個差不多,這些東西都是干嘛的。
走!跟波哥看看我們的入口文件:
之前我們入口文件內容都比較多,但是這次不一樣了,因為我們要做的不是一步就能完成的事,那么我們的入口文件就不做邏輯處理使用,他有兩個作用:
第一:啟動文件使用。就好比我們要玩游戲,那么桌面上就會給你們創建一個快捷方式。OK,就這個文件就是快捷方式的作用。
第二:全局的參數配置。
上面的參數大家能看懂,不多說了!
入口文件過!
接下來我們去看roles目錄的tasks:
上面的目錄架構我們看到tasks下面有三個文件,當我們ansible執行playbook的時候,動作就會到tasks目錄下面去找,他默認會第一個找main.yml
我們再看看這main.yml是如何寫的?
就這兩句,這里就說明task的任務順序和指定任務文件名奧!
include就是干這個用的。這個就是jinjia2語句,都得記住!
咱們再去看init_env.yml
內容比較多,這里不多介紹,就是初始化作用的,創建目錄,配置模板,分發腳本什么的雜活。沒什么值得特別介紹的。
咱們再看install_redis文件:
這里面有點東西全網都沒人提這個事。
變量的運算:這里面有些內容是需要變量運算的,因為我們的端口是有規律的增長7000到7005,我看有不少人干脆寫出來,確實可以寫但是麻煩。要是100個呢?對吧,所以這里需要多口數進行加法運算。
- set_fact: prot={{prot|int+1}}
大家看這句話,就是端口數+1,變成了7001了。這個int就是強調運算完之后prot這個變量還是數字類型,如果不強調添加,那么就會變成字符串,下一個節點就沒辦法對其進行運算了。這個是個大坑奧!
- name: make redis
shell: /bin/bash {{baseDir}}/redis_cluster/script/installRedis.sh
async: 300
poll: 5
tags: ['make redis']
照比之前的普通腳本,咱們這里咱們用到了playbook的異步,當然playbook默認異步是同時觸發5個任務(這個知識點記住,面試的時候有可能會考)。
async:參數值代表了這個任務執行時間的上限值。即任務執行所用時間如果超出這個時間,則認為任務失敗。此參數若未設置,則為同步執行。poll:參數值代表了任務異步執行時輪詢的時間間隔。templates有點多:波哥寫個時候還挺費勁的。就不講了,應該能看懂就是shell腳本。
咱們最后總結一下咱們這個項目的ansible-playbook的寫法和特點。
1、入口文件:全局變量配置。2、tasks文件拆分:將一個大的目的拆分成幾個大步驟,然后用main文件導入細分的二級任務文件並且控制其執行順序。3、變量類型聲明和運算。4、模板配置及ansible+shell腳本調用。
波哥不容易!江湖規矩,人不走空,如果對你有用的情況下或者你覺得還行,點贊、轉發分享選一樣奧!
關注公眾號后回復 :redis集群 獲得項目源碼