1. 程式人生 > >Docker中執行consul叢集

Docker中執行consul叢集

前言

這篇部落格主要依賴上一篇文章,在阿里雲ECS中已經構建了consul映象,同樣的步驟,可以在騰訊雲中構建consul映象,用阿里雲和騰訊雲的主要原因就是新註冊使用者可以免費用一段時間的伺服器。

DNS設定

修改Docker守護程序的DNS查詢設定為:

  • 本地docker的IP地址,這樣可以使用consul來解析DNS
  • Google的DNS伺服器
  • 指定Consul的查詢指定搜尋域
    首先,先找到docker介面docker0的IP地址,如下:
ip addr show docker0

輸出內容如下:

docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP>
mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:79:f7:f6:36 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever

這個介面地址就是172.17.0.1,使用這個地址,我們把/etc/default/docker檔案中的docker啟動項DOCKER_POTS修改為:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

我把阿里雲的伺服器叫做larry,騰訊雲的伺服器叫做curely。
在larry和curely中進行同樣的設定,如下:

DOCKER_OPTS="--dns 172.17.0.1 --dns 8.8.8.8 --dns-search service .consul"

然後重啟larry伺服器

service docker restart

同樣,重啟curely伺服器。

啟動自啟動consul節點

consul映象已經存在larry和curely伺服器中了,把larry伺服器做為自啟動的節點,執行以下命令:

docker run -d -h larry -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p
8500:8500 -p 53:53/udp --name larry_agent chenpeihai/consul -server -advertise 101.132.146.94 -bootstrap-expect 2

-server告訴代理執行在伺服器模式,-advertise 告訴代理通過101.132.146.94廣播自己,-bootstrap-expect告訴consul叢集中有多少代理。
larry需要在阿里雲的安全組中開啟對應的埠
這裡寫圖片描述

啟動curely節點

sudo docker run -d -h curly -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name curly_agent chenpeihai/consul -server -advertise 122.152.199.200 -join 101.132.146.94

-join 告訴consul連線101.132.146.94指定的larry主機的IP所在的叢集。

檢視consul節點日誌

docker logs larry_agent

可以看到日誌如下:

這裡寫圖片描述

sudo docker logs curely_agent

這裡寫圖片描述
可以看到選舉了larry為leader。

檢視consul控制檯

分別檢視larry和consul控制,可以看到叢集已經成功執行。
這裡寫圖片描述
這裡寫圖片描述
這樣就執行成功了。

相關推薦

Docker執行consul叢集

前言 這篇部落格主要依賴上一篇文章,在阿里雲ECS中已經構建了consul映象,同樣的步驟,可以在騰訊雲中構建consul映象,用阿里雲和騰訊雲的主要原因就是新註冊使用者可以免費用一段時間的伺服器。 DNS設定 修改Docker守護程序的DNS查詢設定

Docker執行Shell出現亂碼

腳本 exe 因此 thead gin 並且執行 手動 命令 table 問題描述 最近遇到一個問題: 執行命令 docker exec f4af9b sh -c ‘bash /tmp/build.sh‘ 命令在docker中執行shell,會出現中文亂碼的問題。但是在do

docker搭建Hadoop叢集

前提:jdk和ssh服務都已經安裝完成,如未完成,請參考博主所寫部落格 1、建立映象容器 -P將容器的所有埠對映到主機埠 docker run -itd -v /c/Users:/root/build -P -h master --name master --net mynetwork --

Docker執行PHP專案的探索之旅

Docker出現後,容器技術在網際網路領域得到了空前的普及,無論是大公司還是屌絲創業公司的碼農基本上都會在各種技術社群或者各種演講會議上了解到過相關技術,我們作為一家屌絲創業公司也不例外,去年對Docker做了一番瞭解,並在年前測試了一些方案,今天在這裡總結一下遇到的各種坑以及踩坑過程中的一

容器(docker)執行java需關注的幾個小問題

簡介 container: 資源隔離、平臺無關, 限制cpu、mem等資源   java不知道自己執行在container裡,以為它看到的資源都能用。結果:java工作在資源充足的 詳述 程式執行的兩個核心資源:cpu和mem,其他資源或許也有限制,

docker執行nginx映象

我們今天學習了一下dokcer的簡單應用。 由於我之前有執行映象,且伺服器上執行的映象太多,我們先使用如下命令停止容器並刪除容器。 docker stop $(docker ps -a -q) // stop停止所有容器 docker rm $(docker ps -a -

Docker執行EOS FOR MAC

基本要求以及依賴 安裝 docker for mac ➡️ https://www.docker.com/products/docker-desktop docker需要7GB+記憶體。電腦右上角docker -> Preferences -> Advanced -> Memo

Influxdb+Grafana+Telegraf及docker執行

目錄 參考資料 2. 特點: 3. 功能及預設 4. 主要概念 1) 與SQL的名詞做比較 2) InfluxDB的獨有概念 5. 常用命令 1. 使用者管理: 6. 函式

docker 執行 jupyter,並在本機上開啟網頁

在 docker 中執行 jupyter,並在本機上開啟網頁 docker run docker run -it -p 7000:7000 --rm --name test docker_image_id docker 啟動 jupyter noteboo

將Spring boot應用打包成映象放到docker執行

學習docker,需要把專案打包成映象,所以第一步首先得把專案打成war包,這樣才能丟上去。 打包成war 這一步在傳統java web專案中看起來非常簡單一步,但是Spring boot卻有小許不同。 增加SpringBootServletIni

docker部署redis叢集

第一步執行 docker run -itd --net shadownet --privileged=true --ip 172.18.0.20 -d -p 7003:7003 -p 7004:7004 -p 7005:7005 -p 17003:17003 -p 1700

docker執行lnmp環境介面502,nginx錯誤日誌提示/run/php/php7.0-fpm.sock failed

docker中中執行lnmp開發環境,介面報502錯誤進入docker docker exec -it createID bash tailf /var/log/nginx/error.log 錯誤資訊: 2017/06/26 14:45:

手動將spring-boot工程打包到docker執行

本篇文章主要記錄手動講jar包放到docker中執行,至於jar包的生成,請看我另外一篇文章,這裡不做詳述,連結如下試驗環境:1、centos 72、docker 18.04.0-ce一、環境準備1、建立測試目錄 jar_testmkdir jar_test2、上傳測試jar

Docker執行ONOS

下載映象: #docker pull onosproject/onos  檢視上一步下載的映象 #docker images 建立docker容器例項 docker run -t -d --n

如何在docker部署Elasticsearch叢集和kibana

做實驗時需要了解Elasticsearch叢集如何操作?通過使用docker-compose可以批量建立docker容器,啟動ES叢集。 先配置檔案docker-compose.yml檔案如下: 1 version: '2.2' 2 networks: 3 esnet: 4 services:

Docker執行DPDK

版本 Docker:1.12.1 DPDK:16.07 Docker的安裝 在Ubuntu中docker的安裝還是很簡單的。參考官方文件1就行了。需要注意的是隻能在64位,linux版本號不低於3.11.0-15-generic的發行版上執行。所以在

Docker執行Java:為了防止失敗,你需要知道這些

摘要: 很多開發者會(或者應該)知道,當我們為執行在Linux容器(Docker、rkt、runC、lxcfs等)中的Java程式去設定JVM的GC、堆大小和執行時編譯器的引數時並沒有得到預想的效果。當我們通過“java -jar mypplication-fat.jar

ARTS-S 在docker執行本地指令碼

很多情況是本地沒有編譯環境,但docker中有編譯環境。想編譯原生代碼,就要把本地的程式碼和編譯指令碼對映到docker中,指令碼如下: docker run \

Docker搭建zookeeper叢集

1.獲取官方映象 從dockerhub獲取官方的zookeeper映象: docker pull zookeeper 2.瞭解映象內容 拉取完映象後,通過 docker inspect zookeeper 我們可以檢視到關於該映象的一些基本資訊: ...... "Env": [ "PATH=/usr/

docker執行activemq

Dockerfile如下: FROM ubuntu:14.04 MAINTAINER *** "****@*****.com" RUN apt-get update ADD jdk-8u77-linu