ansible--一鍵部署redis5.0.5集群及全套腳本


前兩天帶着大家寫了兩個腳本,難度是遞增的,可以到公眾號腳本命令板塊的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 7000192.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 redisshell: /bin/bash {{baseDir}}/redis_cluster/script/installRedis.shasync: 300poll: 5tags: ['make redis']

照比之前的普通腳本,咱們這里咱們用到了playbook的異步,當然playbook默認異步是同時觸發5個任務(這個知識點記住,面試的時候有可能會考)。

async:參數值代表了這個任務執行時間的上限值。即任務執行所用時間如果超出這個時間,則認為任務失敗。此參數若未設置,則為同步執行。poll:參數值代表了任務異步執行時輪詢的時間間隔。templates有點多:波哥寫個時候還挺費勁的。就不講了,應該能看懂就是shell腳本。

咱們最后總結一下咱們這個項目的ansible-playbook的寫法和特點。

1、入口文件:全局變量配置。2、tasks文件拆分:將一個大的目的拆分成幾個大步驟,然后用main文件導入細分的二級任務文件並且控制其執行順序。3、變量類型聲明和運算。4、模板配置及ansible+shell腳本調用。

波哥不容易!江湖規矩,人不走空,如果對你有用的情況下或者你覺得還行,點贊、轉發分享選一樣奧!

關注公眾號后回復 :redis集群 獲得項目源碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM