幾個月沒有更新部落格了,已經長草了,特意來除草。之前基於nginx反向**使用的是:nginx + confd + etcd的儲存方式,最近發現部門dba同事使用consul + redis + 哨兵實現的主從自動選舉切換,不影響業務的方式,還有看到有些公司分享的consul + mha的方式,覺得不錯,於是研究了下consul,本案例是基於consul + consul-template + nginx + flask + mysql構成的。既然consul這麼傳神,我們先來看看consul是什麼:
consul是hashicorp公司(曾經開發過vgrant) 推出的一款開源工具, 基於go語言開發, 輕量級, 用於實現分布式系統的服務發現與配置。 與其他類似產品相比, 提供更「一站式」的解決方案。 consul內建有kv儲存, 服務註冊/發現, 健康檢查, http+dns api, web ui等多種功能。官網: 其他同類服務發現與配置的主流開源產品有:zookeeper和etcd。
consul的優勢:
支援多資料中心, 內外網的服務採用不同的埠進行監聽。 多資料中心集群可以避免單資料中心的單點故障, zookeeper和 etcd 均不提供多資料中心功能的支援
支援健康檢查. etcd 不提供此功能.
支援 http 和 dns 協議介面. zookeeper 的整合較為複雜,etcd 只支援 http 協議. 有dns功能, 支援rest api
官方提供web管理介面, etcd 無此功能.
部署簡單, 運維友好, go二進位制檔案解壓即用。批量部署方便
consul和其他服務發現工具的對比表:
image.png
主要架構:
image.png
架構說明:
consul cluster由部署和執行了consul agent的節點組成。 在cluster中有兩種角色:server和 client。
server和client的角色和consul cluster上執行的應用服務無關, 是基於consul層面的一種角色劃分.
consul 支援多資料中心, 多個資料中心要求每個資料中心都要安裝一組consul cluster,多個資料中心間基於gossip protocol協議來通訊, 使用raft演算法實現一致性
基礎介紹到這裡,下面直接進入我們主題,環境介紹(生產環境建議構建consul server的集群):
consul:192.168.113.174
nginx:192.168.113.174
反向**伺服器:
192.168.113.175:8080
192.168.113.176:8080
1、consul 與consul-template安裝:
2、啟動一下consul server:
[root@master ~]# consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -bind 0.0.0.0 -client 0.0.0.0 -ui
image.png
3、下面我們準備一下consul模板,然後再註冊服務。
4、觀察一下nginx的配置資訊,首先我們確認下配置檔案自目錄下沒有資訊:
[root@master conf.d]# pwd
/etc/nginx/conf.d
[root@master conf.d]# ls
5、啟動模板檔案:
[root@master ~]# consul-template -consul 127.0.0.1:8500 -template item.consul.ctmpl:default.conf:"/usr/sbin/nginx -s reload"
##根據註冊資訊與模板生成乙個default.conf的檔案,具體語法可以檢視相關模板文件:
[root@master ~]# consul-template -consul 127.0.0.1:8500 -template item.consul.ctmpl:/etc/nginx/conf.d/default.conf:"/usr/sbin/nginx -s reload"
6、往裡面註冊服務資訊:
[root@master conf.d]# curl -x put -d』}』
[root@master conf.d]# curl -x put -d』}』
7、web介面我們檢視一下是否已經註冊了服務:
image.png
8、看一下配置檔案是否已經生成:
upstream tomcat
}server
}9、到這一步似乎已經完成了,不過像這種東西能不能平台話呢,看一下我構建的平台新增虛擬主機部分:
image.png
image.png
image.png
12、看一下web ui我們會發現已經新增了乙個網域名稱:
image.png
13、再看一下nginx的配置檔案:
image.png
總結:到此乙個簡單的運維管理平台已經構建完成了,那麼其實我們還能夠在擴充套件,比如做lvs,haproxy都是可以的,當然基於docker的也有相關的註冊發現機制,我們可以隨意發揮,要構建乙個漂亮的nginx管理平台,監控必不可少,有時間我們加上影象再展示。
Thinkphp實現自動驗證和自動完成
thinkphp的自動驗證和自動完成都是根所表單提交的內容來的,對部分資料進行規則驗證和處理後插入到資料庫。1 自動驗證格式 array array 驗證欄位1,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 array 驗證欄位2,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 驗證條件 se...
實現自動WiFi連線
1,想實現連線到指定的wifi網路嗎?其實這個不是很難,可這個一直困擾了我很長時間,今天終於找到了原因,因為,我之前的配置就是錯誤的,所以,導致無法連線到指定的無線網路。2,實現方法 wificonfiguration config new wificonfiguration config.allo...
jsp實現自動登入
一 什麼是使用者自動登入?如果使用者經常訪問我們的 假如每天都訪問一次,或者好幾次,那麼使用者每次都重複這些登入操作就會感到相當厭煩。通過一些簡單的技術手段,我們可以讓 記住 那些在曾經登入過的使用者。當該使用者下次再來訪問的時候,可以識別該使用者,並為其自動完成登入過程。二 基本思路 作為 的編寫...