<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 環境限制 * 必須安裝key-value存儲服務用于服務發現,如etcd * 宿主機已經安裝docker engine * 宿主機的hostname必須不同 * 內核大于3.16 * 各宿主機的時間需要同步 > 最簡單的時間同步方式,在各個宿主機上執行sudo ntpdate cn.pool.ntp.org 這通常是臨時方案.終極方案是搭建時間同步的ntp服務. ### 環境準備及角色分配 * 三臺ubuntu14.04的server 由于etcd采用Raft算法, 因此在做決策時需要多數節點的投票, 所以一般部署為奇數節點: 3, 5, 7 |主機名|ip|內核|啟動docker容器名稱|docker engine版本| |-|-|-|-|-|-| |DC-server1|192.168.1.158|4.2.0-27-generic|server1(centOS7)|1.10.3| |DC-server2|192.168.1.60|4.2.0-27-generic|server2(centOS7)|1.10.3| |DC-server3|192.168.1.24|4.2.0-27-generic||1.10.3| * 實驗目標:兩個CentOS7容器server1,server2網絡互通 ### 下載分布式發現服務協調軟件:etcd #### 下載cetcd軟件并解壓,實際就是將其二進制文件放到$PATH下面即可 ```bash aixin@DC-server1$ curl -L https://github.com/coreos/etcd/releases/download/v2.2.1/etcd-v2.2.1-linux-amd64.tar.gz -o etcd-v2.2.1-linux-amd64.tar.gz aixin@DC-server1$ tar xzvf etcd-v2.2.1-linux-amd64.tar.gz aixin@DC-server1$ sudo mv etcd etcdctl /bin ``` 將以上的命令在三臺機器上都執行一遍,或者使用scp將以上文件分發到另外兩個主機 文件解壓之后有如下幾個文件: ``` Documentation etcd etcdctl ``` * Documents是文檔 * etcd是服務的主執行文件 * etcdctl是用戶客戶端命令 #### 啟動etcd服務 ```bash aixin@DC-server1$ etcd -name node1 \ -initial-advertise-peer-urls http://192.168.1.158:2380 \ -listen-peer-urls http://192.168.1.158:2380 \ -listen-client-urls http://192.168.1.158:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://192.168.1.158:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \ -initial-cluster-state new \ -data-dir $ETCD_DATADIR & aixin@DC-server2$ etcd -name node2 \ -initial-advertise-peer-urls http://192.168.1.60:2380 \ -listen-peer-urls http://192.168.1.60:2380 \ -listen-client-urls http://192.168.1.60:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://192.168.1.60:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \ -initial-cluster-state new \ -data-dir $ETCD_DATADIR & aixin@DC-server3$ etcd -name node3 \ -initial-advertise-peer-urls http://192.168.1.24:2380 \ -listen-peer-urls http://192.168.1.24:2380 \ -listen-client-urls http://192.168.1.24:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://192.168.1.24:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \ -initial-cluster-state new \ -data-dir $ETCD_DATADIR & ``` 在三臺機器上分別啟動etcd服務.```CLUSTER_IPS=(192.168.1.158 192.168.1.60 192.168.1.24)```這是一個ip數組. #### 配置解析 * listen-peer-urls 用于節點與節點之間數據交換, 因此需要監聽在其他節點可以訪問的IP地址上 默認端口為: 2380 & 7001 (7001不推薦使用, 已基本廢棄, 主要用于兼容老服務) * listen-client-urls 用戶客戶機訪問etcd數據, 一般監聽在本地, 如果需要集中管理, 可以監聽在管理服務器可以訪問的IP地址上 默認端口為: 2379 & 4001 (4001不推薦使用, 已基本廢棄, 主要用于兼容老服務) * initial-advertise-peer-urls 該參數表示節點監聽其他節點同步信號的地址 默認端口為: 2380 & 7001 (7001不推薦使用, 已基本廢棄, 主要用于兼容老服務) * advertise-client-urls 在加入proxy節點后, 會使用該廣播地址, 因此需要監聽在一個proxy節點可以訪問的IP地址上 默認端口為: 2379 & 4001 (7001不推薦使用, 已基本廢棄, 主要用于兼容老服務) #### 檢查集群的啟動是否正確 ``` aixin@DC-server2$ etcdctl cluster-health member 5a2567911e869c1 is healthy: got healthy result from http://192.168.1.158:2379 member 5a125ed3c29f1acb is healthy: got healthy result from http://192.168.1.24:2379 member 70622961dfd72d05 is healthy: got healthy result from http://192.168.1.60:2379 cluster is healthy ``` ### 配置Docker并重啟 * 在每一臺docker宿主機上做如下配置,并重啟docker ```bash sudo vi /etc/default/docker DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store etcd://<三個IP任選其一>:2379 --cluster-advertise eth0:2375" sudo service docker restart ``` * 集群配置 --cluster-store= 參數指向docker daemon所使用key value service的地址(本例中即etcd的服務地址) --cluster-advertise= 參數決定了所使用網卡以及docker daemon端口信息 * 宿主機配置 上面的-H 的參數分別指定了docker demon服務的地址和協議 ### 自動啟動shell腳本(優化啟動過程) ``` #!/bin/bash source ~/workspace/conf/project.cfg source ./etcd.conf if [ $# != 1 ] ; then echo "USAGE: $0 <SUDO_PASSWD>" echo " e.g.: $0 aixin" exit 1; fi SUDO_PASSWD=$1 NODE_IP=$(hostname --all-ip-addresses | awk '{print $1}') ETCD_NODENAME="" for ((i=1; i<=${#CLUSTER_IPS[*]}; i++)) do if [ $1 == ${CLUSTER_IPS[i-1]} ];then ETCD_NODENAME="node"${i} fi done if [ -z $ETCD_NODENAME ];then echo "you must enter an ip in CLUSTER_IPS list. conf file is etcd.conf" exit 0; fi ETCD_DATADIR=${DATA_DIR}/etcd/${ETCD_NODENAME} if [ ! -d $ETCD_DATADIR ];then echo ${SUDO_PASSWD}|sudo -S mkdir -p $ETCD_DATADIR fi echo ${SUDO_PASSWD}|sudo -S ./etcd/etcd -name ${ETCD_NODENAME} \ -initial-advertise-peer-urls http://${NODE_IP}:2380 \ -listen-peer-urls http://${NODE_IP}:2380 \ -listen-client-urls http://${NODE_IP}:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://${NODE_IP}:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster node1=http://${CLUSTER_IPS[0]}:2380,node2=http://${CLUSTER_IPS[1]}:2380,node3=http://${CLUSTER_IPS[2]}:2380 \ -initial-cluster-state new \ -data-dir $ETCD_DATADIR & ``` ### 創建overlay網絡,并進行容器聯通測試 * 以下部分省略,和我的另一篇文章測試過程一致:[《基于consul服務發現的overlay跨宿主機容器網絡》](http://www.zimug.com/364.html) ### 與consul的實現方式對比 consul: 服務發現/全局的分布式key-value存儲。自帶DNS查詢服務,可以跨數據中心。提供節點的健康檢查,可以實現動態的consul節點增減.docker官方的用例推薦! etcd: 服務發現/全局的分布式key-value存儲.靜態的服務發現,如果實現動態的新增etcd節點,需要依賴第三方組件。 ### 參考 http://my.oschina.net/funwun/blog/689861 http://chunqi.li/2015/11/09/docker-multi-host-networking/
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看