最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker-compose部署etcd集群的實(shí)現(xiàn)步驟

 更新時(shí)間:2021年10月21日 14:49:03   作者:cheems~  
本文主要介紹了docker-compose部署etcd集群的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

編寫docker-compose.yml

version: "3.0"

networks:
  etcd-net:           # 網(wǎng)絡(luò)
    driver: bridge    # 橋接模式

volumes:
  etcd1_data:         # 掛載到本地的數(shù)據(jù)卷名
    driver: local
  etcd2_data:
    driver: local
  etcd3_data:
    driver: local
###
### etcd 其他環(huán)境配置見:https://doczhcn.gitbook.io/etcd/index/index-1/configuration
###
services:
  etcd1:
    image: bitnami/etcd:latest  # 鏡像
    container_name: etcd1       # 容器名 --name
    restart: always             # 總是重啟
    networks:
      - etcd-net                # 使用的網(wǎng)絡(luò) --network
    ports:                      # 端口映射 -p
      - "20000:2379"
      - "20001:2380"
    environment:                # 環(huán)境變量 --env
      - ALLOW_NONE_AUTHENTICATION=yes                       # 允許不用密碼登錄
      - ETCD_NAME=etcd1                                     # etcd 的名字
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380  # 列出這個(gè)成員的伙伴 URL 以便通告給集群的其他成員
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380           # 用于監(jiān)聽伙伴通訊的URL列表
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379         # 用于監(jiān)聽客戶端通訊的URL列表
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379        # 列出這個(gè)成員的客戶端URL,通告給集群中的其他成員
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster             # 在啟動(dòng)期間用于 etcd 集群的初始化集群記號(hào)
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 # 為啟動(dòng)初始化集群配置
      - ETCD_INITIAL_CLUSTER_STATE=new                      # 初始化集群狀態(tài)
    volumes:
      - etcd1_data:/bitnami/etcd                            # 掛載的數(shù)據(jù)卷

  etcd2:
    image: bitnami/etcd:latest
    container_name: etcd2
    restart: always
    networks:
      - etcd-net
    ports:
      - "20002:2379"
      - "20003:2380"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_NAME=etcd2
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
      - ETCD_INITIAL_CLUSTER_STATE=new
    volumes:
      - etcd2_data:/bitnami/etcd

  etcd3:
    image: bitnami/etcd:latest
    container_name: etcd3
    restart: always
    networks:
      - etcd-net
    ports:
      - "20004:2379"
      - "20005:2380"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_NAME=etcd3
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
      - ETCD_INITIAL_CLUSTER_STATE=new
    volumes:
      - etcd3_data:/bitnami/etcd

運(yùn)行docker-compose

[root@centos8 etcdtest]# tree
.
└── docker-compose.yml

0 directories, 1 file
[root@centos8 etcdtest]# docker-compose up -d
[+] Running 4/4
 ⠿ Network etcdtest_etcd-net  Created                                                                                                                                 0.1s
 ⠿ Container etcd3            Started                                                                                                                                 0.6s
 ⠿ Container etcd1            Started                                                                                                                                 0.7s
 ⠿ Container etcd2            Started                                                                                                                                 0.7s
[root@centos8 etcdtest]# 

檢查搭建狀態(tài)

查看節(jié)點(diǎn)啟動(dòng)情況

[root@centos8 etcdtest]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                      NAMES
89469f98491f   bitnami/etcd:latest   "/opt/bitnami/script…"   54 seconds ago   Up 53 seconds   0.0.0.0:20004->2379/tcp, :::20004->2379/tcp, 0.0.0.0:20005->2380/tcp, :::20005->2380/tcp   etcd3
5454f5a719a2   bitnami/etcd:latest   "/opt/bitnami/script…"   54 seconds ago   Up 53 seconds   0.0.0.0:20000->2379/tcp, :::20000->2379/tcp, 0.0.0.0:20001->2380/tcp, :::20001->2380/tcp   etcd1
bf989f9512b5   bitnami/etcd:latest   "/opt/bitnami/script…"   54 seconds ago   Up 53 seconds   0.0.0.0:20002->2379/tcp, :::20002->2379/tcp, 0.0.0.0:20003->2380/tcp, :::20003->2380/tcp   etcd2

查看掛載的數(shù)據(jù)卷

[root@centos8 etcdtest]# docker volume ls
DRIVER    VOLUME NAME
local     etcdtest_etcd1_data
local     etcdtest_etcd2_data
local     etcdtest_etcd3_data
[root@centos8 etcdtest]# docker inspect etcd1 

"Mounts": [
    {
        "Type": "volume",
        "Name": "etcdtest_etcd1_data",
        "Source": "/var/lib/docker/volumes/etcdtest_etcd1_data/_data",
        "Destination": "/bitnami/etcd",
        "Driver": "local",
        "Mode": "z",
        "RW": true,
        "Propagation": ""
    }
]

測(cè)試節(jié)點(diǎn)

從etcd1寫一個(gè)key

[root@centos8 etcdtest]# docker exec -it etcd1 bash
I have no name!@5454f5a719a2:/opt/bitnami/etcd$ etcdctl put name "i am wxf"
OK

從etcd2讀一個(gè)value

[wxf@centos8 ~]$ docker exec -it etcd2 bash
I have no name!@bf989f9512b5:/opt/bitnami/etcd$ etcdctl get name
name
i am wxf

搭建成功!

Golang 與 etcd 簡(jiǎn)單交互

package main

import (
 "context"
 "fmt"
 "go.etcd.io/etcd/client/v3"
 "time"
)

func main() {
 cli, err := clientv3.New(clientv3.Config{
  Endpoints:   []string{"http://192.168.135.10:20000", "http://192.168.135.10:20002", "http://192.168.135.10:20004"},
  DialTimeout: 5 * time.Second,
 })
 if err != nil {
  fmt.Printf("connect to etcd failed, err:%v\n", err)
  return
 }
 defer cli.Close()
 fmt.Println("connect to etcd success")
 defer cli.Close()

 go Watch(cli)

 Create(cli)
 Read(cli)
 Delete(cli)
 Update(cli)
 select {}
}

func Watch(cli *clientv3.Client) {
 rch := cli.Watch(context.Background(), "name") // type WatchChan <-chan WatchResponse
 for wresp := range rch {
  for _, ev := range wresp.Events {
   fmt.Printf("Type: %s Key:%s Value:%s\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
  }
 }
 fmt.Println("out")
}

func Create(cli *clientv3.Client) {
 // put
 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
 _, err := cli.Put(ctx, "name", "wxf")
 cancel()
 if err != nil {
  fmt.Printf("put to etcd failed, err:%v\n", err)
  return
 }
}

func Read(cli *clientv3.Client) {
 //get
 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
 resp, err := cli.Get(ctx, "name")
 cancel()
 if err != nil {
  fmt.Printf("get from etcd failed, err:%v\n", err)
  return
 }
 for _, ev := range resp.Kvs {
  fmt.Printf("Type: %s Key:%s Value:%s\n", "READ", ev.Key, ev.Value)
 }
}

func Update(cli *clientv3.Client) {
 // put
 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
 _, err := cli.Put(ctx, "name", "xyy")
 cancel()
 if err != nil {
  fmt.Printf("put to etcd failed, err:%v\n", err)
  return
 }
}

func Delete(cli *clientv3.Client) {
 //del
 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
 _, err := cli.Delete(ctx, "name")
 cancel()
 if err != nil {
  fmt.Printf("delete from etcd failed, err:%v\n", err)
  return
 }
}

go run main.go

connect to etcd success
Type: PUT Key:name Value:wxf
Type: READ Key:name Value:wxf
Type: DELETE Key:name Value:
Type: PUT Key:name Value:xyy
Type: PUT Key:name Value:test for terminal
Type: PUT Key:name Value:test for terminal aabbccdd

I have no name!@5454f5a719a2:/opt/bitnami/etcd$ etcdctl put name "test for terminal"
OK
I have no name!@5454f5a719a2:/opt/bitnami/etcd$ etcdctl put name "test for terminal aabbccdd"
OK

到此這篇關(guān)于docker-compose部署etcd集群的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker-compose部署etcd集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 從進(jìn)程中去理解?Docker隔離技術(shù)

    從進(jìn)程中去理解?Docker隔離技術(shù)

    這篇文章主要介紹了從進(jìn)程中去理解?Docker隔離技術(shù),Docker?公司發(fā)布的?Docker?項(xiàng)目具有里程碑式的意義;Docker?項(xiàng)目通過“容器鏡像”,解決了應(yīng)用打包這個(gè)根本性難題,下文更多相關(guān)資料,需要的朋友可以參考一下
    2022-04-04
  • Docker容器網(wǎng)絡(luò)端口配置過程詳解

    Docker容器網(wǎng)絡(luò)端口配置過程詳解

    這篇文章主要介紹了Docker容器網(wǎng)絡(luò)端口配置過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • docker run 運(yùn)行容器自動(dòng)結(jié)束的解決

    docker run 運(yùn)行容器自動(dòng)結(jié)束的解決

    這篇文章主要介紹了docker run 運(yùn)行容器自動(dòng)結(jié)束的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-11-11
  • Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟

    Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟

    本文主要介紹了Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟,通過將Java應(yīng)用程序打包成一個(gè)Docker鏡像,可以實(shí)現(xiàn)快速部署、資源隔離和靈活擴(kuò)展,感興趣的可以了解一下
    2024-03-03
  • Docker-compose安裝的全過程

    Docker-compose安裝的全過程

    這篇文章主要介紹了Docker-compose安裝的全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker完整卸載的兩種方法詳細(xì)教程

    Docker完整卸載的兩種方法詳細(xì)教程

    在使用Docker的過程中,有時(shí)我們需要卸載Docker以清理系統(tǒng)環(huán)境或進(jìn)行重新安裝,下面這篇文章主要給大家介紹了關(guān)于Docker完整卸載的兩種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 使用 VPS 下載 Docker 鏡像并導(dǎo)入到本地服務(wù)器的過程

    使用 VPS 下載 Docker 鏡像并導(dǎo)入到本地服務(wù)器的過程

    這篇文章主要介紹了使用 VPS 下載 Docker 鏡像并導(dǎo)入到本地服務(wù)器,通過使用 VPS 下載 Docker 鏡像并將其傳輸?shù)奖镜胤?wù)器,我們可以克服網(wǎng)絡(luò)限制,更靈活地管理和部署 Docker 鏡像,需要的朋友可以參考下
    2024-08-08
  • 在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    Docker 鏡像是 Docker 容器的基礎(chǔ),鏡像包含了應(yīng)用程序所需的所有文件和依賴,Docker-Compose 默認(rèn)不會(huì)自動(dòng)拉取最新的鏡像版本,這可能會(huì)導(dǎo)致使用過時(shí)的鏡像,從而錯(cuò)過重要的更新,為了確保 Docker-Compose 始終使用最新的鏡像,我們可以采用多種方法,以下將詳細(xì)介紹這些方法
    2024-08-08
  • Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn)

    Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn)

    本文主要介紹了Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • AntDesign?Docker部署詳細(xì)流程

    AntDesign?Docker部署詳細(xì)流程

    這篇文章主要為大家介紹了AntDesign?Docker部署流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

柘城县| 皋兰县| 精河县| 专栏| 保德县| 奉化市| 东丽区| 太和县| 河津市| 武隆县| 云霄县| 龙胜| 民乐县| 柳州市| 龙游县| 当雄县| 肇东市| 莒南县| 陇南市| 余江县| 闽侯县| 淮阳县| 渑池县| 崇礼县| 榆社县| 武强县| 宝山区| 二手房| 蒲城县| 永济市| 思南县| 鹤峰县| 阿拉尔市| 大荔县| 上林县| 吴江市| 金川县| 平和县| 丘北县| 义马市| 类乌齐县|