- k8s傳遞實戰-架構說明并準備zk叢集
-
- 1 傳遞的服務架構圖:
-
-
- 1.1 架構圖解
- 1.2 傳遞說明:
-
-
- 2 部署ZK叢集
-
-
- 2.1 二進制安裝JDK
-
-
-
-
- 2.1.1 解壓jdk
- 2.1.2 寫入環境變量
-
-
-
- 2.2 二進制安裝zk
-
-
- 2.2.1 下載下傳zookeeper
- 2.2.2 建立zk配置檔案:
- 2.2.3 建立叢集配置
- 2.2.4 修改dns解析
- 2.3 啟動zk叢集
- 2.3.1 啟動zookeeper
-
-
-
-
- 2.3.2 檢查zk啟動情況
- 2.3.3 檢查zk叢集情況
-
-
-
- 3 準備java運作底包
-
-
- 3.1 拉取原始底包
- 3.2 制作新底包
-
-
-
-
- 3.2.1 制作dockerfile
- 3.2.2準備dockerfile需要的檔案
- 3.2.3 建構底包并上傳
-
-
-
最上面一排為K8S叢集外服務
1.1 代碼倉庫使用基于git的gitee
1.2 注冊中心使用3台zk組成叢集
1.3 使用者通過ingress暴露出去的服務進行通路
-
中間層是K8S叢集内服務
2.1 jenkins以容器方式運作,資料目錄通過共享磁盤做持久化
2.2 整套dubbo微服務都以POD方式傳遞,通過zk叢集通信
2.3 需要提供的外部通路的服務通過ingress方式暴露
-
最下層是運維主機層
3.1 harbor是docker私有倉庫,存放docker鏡像
3.2 POD相關yaml檔案建立在運維主機特定目錄
3.3 在K8S叢集内通過nginx提供的下載下傳連接配接應用yaml配置
docker雖然可以部署有狀态服務,但如果不是有特别需要,還是建議不要部署有狀态服務
K8S同理,也不建議部署有狀态服務,如mysql,zk等。
是以手動将zookeeper建立叢集提供給dubbo使用
叢集分布:7-11,7-12,7-21
zk是java服務,需要依賴jdk
jdk請自行下載下傳,隻要是1.8版本的就可以,rpm安裝或二進制安裝均可:
mkdir /opt/src
mkdir /usr/java
cd /opt/src
tar -xf jdk-8u221-linux-x64.tar.gz -C /usr/java/
ln -s /usr/java/jdk1.8.0_221/ /usr/java/jdk
cat >>/etc/profile <<'EOF'
#JAVA HOME
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
EOF
# 使環境變量生效
source /etc/profile
驗證結果
[root@hdss7-11 ~]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
下載下傳位址
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxf zookeeper-3.4.14.tar.gz -C /opt/
ln -s /opt/zookeeper-3.4.14/ /opt/zookeeper
cat >/opt/zookeeper/conf/zoo.cfg <<'EOF'
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zk1.zq.com:2888:3888
server.2=zk2.zq.com:2888:3888
server.3=zk3.zq.com:2888:3888
EOF
建立相關目錄
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs
給每個zk不同的myid,以便區分主從
#7-11上
echo 1 > /data/zookeeper/data/myid
#7-12上
echo 2 > /data/zookeeper/data/myid
#7-21上
echo 3 > /data/zookeeper/data/myid
到
7.11
上增加dns解析記錄
vi /var/named/zq.com.zone
...
zk1 A 10.4.7.11
zk2 A 10.4.7.12
zk3 A 10.4.7.21
#驗證結果
~]# dig -t A zk1.zq.com +short
10.4.7.11
在每台zk機器上都執行此操作
/opt/zookeeper/bin/zkServer.sh start
~]# ss -ln|grep 2181
tcp LISTEN 0 50 :::2181 :::*
[root@hdss7-11 ~]# /opt/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@hdss7-12 ~]# /opt/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[root@hdss7-21 ~]# /opt/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower
到此,zookeeper叢集就搭建好了。
運維主機上操作
docker pull stanleyws/jre8:8u112
docker tag fa3a085d6ef1 harbor.zq.com/public/jre:8u112
docker push harbor.zq.com/public/jre:8u112
mkdir -p /data/dockerfile/jre8/
cd /data/dockerfile/jre8/
cat >Dockerfile <<'EOF'
FROM harbor.zq.com/public/jre:8u112
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
echo 'Asia/Shanghai' >/etc/timezone
ADD config.yml /opt/prom/config.yml
ADD jmx_javaagent-0.3.1.jar /opt/prom/
WORKDIR /opt/project_dir
ADD entrypoint.sh /entrypoint.sh
CMD ["sh","/entrypoint.sh"]
EOF
添加config.yml
此檔案是為後面用普羅米修斯監控做準備的
cat >config.yml <<'EOF'
---
rules:
- pattern: '.*'
EOF
下載下傳jmx_javaagent,監控jvm資訊:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar -O jmx_javaagent-0.3.1.jar
建立entrypoint.sh啟動腳本:
使用exec 來運作java的jar包,能夠使腳本将自己的pid 為‘1’ 傳遞給java程序,避免docker容器因沒有前台程序而退出。并且不要加&符。
cat >entrypoint.sh <<'EOF'
#!/bin/sh
M_OPTS="-Duser.timezone=Asia/Shanghai -javaagent:/opt/prom/jmx_javaagent-0.3.1.jar=$(hostname -i):${M_PORT:-"12346"}:/opt/prom/config.yml"
C_OPTS=${C_OPTS}
JAR_BALL=${JAR_BALL}
exec java -jar ${M_OPTS} ${C_OPTS} ${JAR_BALL}
EOF
在harbor中建立名為
base
的公開倉庫,用來存放自己自定義的底包
docker build . -t harbor.zq.com/base/jre8:8u112
docker push harbor.zq.com/base/jre8:8u112