2024 Практические документы по эксплуатации и обслуживанию Cloud Native, 2019 г. 99 оригинальный проект Нет. 005 Глава |Docker Серия лучших практик «2024» Нет. 005 Глава
Привет,добро пожаловать вКвалифицирован в эксплуатации и обслуживании。
Контент, которым сегодня поделились, Docker Лучшая практика «2024» в серии документов Docker развертывать etcd Кластерный реальный бой。
Карта контента
Фактическая конфигурация сервера (копия архитектуры 1:1 мелкомасштабной производственной среды, конфигурация немного отличается)
имя хоста | IP | ЦП (ядро) | Память (ГБ) | Системный диск (ГБ) | Диск с данными (ГБ) | использовать |
---|---|---|---|---|---|---|
docker-node-1 | 192.168.9.81 | 4 | 16 | 40 | 100 | Докер-узел 1 |
docker-node-2 | 192.168.9.82 | 4 | 16 | 40 | 100 | Докер-узел 2 |
docker-node-3 | 192.168.9.83 | 4 | 16 | 40 | 100 | Докер-узел 3 |
общий | 3 | 12 | 48 | 120 | 300 |
Реальная боевая среда включает информацию о версии программного обеспечения.
В прошлом выпуске мы опирались на coreos Официально предоставлено Docker Зеркальное отображение завершенного одного узла etcd развертывать Настоящий бой。
В этом выпуске мы продолжаем завершать процесс на основе файлов конфигурации и переменных среды. etcd кластерразвертывать Настоящий бой。
В этом разделе используются файлы конфигурации для настройки служб кластера etcd.
mkdir -p /data/containers/etcd/{data,config}
etcd Служить Конфигурационный файл Путь:/data/containers/etcd/config/etcd.conf.yml
Содержимое каждого узла отличается и его необходимо писать отдельно.
узел 1 Содержимое файла следующее:
name: etcd-1
data-dir: /var/etcd
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://192.168.9.81:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.9.81:2380
initial-cluster: etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
initial-cluster-token: etcd-cluster
initial-cluster-state: new
logger: zap
log-level: info
#log-outputs: stder
узел 2 Содержимое файла следующее:
name: etcd-2
data-dir: /var/etcd
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://192.168.9.82:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.9.82:2380
initial-cluster: etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
initial-cluster-token: etcd-cluster
initial-cluster-state: new
logger: zap
log-level: info
#log-outputs: stderr
узел 3 Содержимое файла следующее:
name: etcd-3
data-dir: /var/etcd
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://192.168.9.83:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.9.83:2380
initial-cluster: etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
initial-cluster-token: etcd-cluster
initial-cluster-state: new
logger: zap
log-level: info
#log-outputs: stder
Описание специального элемента конфигурации файла конфигурации:
version: '3'
services:
etcd:
container_name: etcd
image: quay.io/coreos/etcd:v3.5.12
command: /usr/local/bin/etcd --config-file=/var/lib/etcd/conf/etcd.conf.yml
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- ${DOCKER_VOLUME_DIRECTORY:-.}/config/etcd.conf.yml:/var/lib/etcd/conf/etcd.conf.yml
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
всеузел Всеосуществлять Следующая команда,Заканчивать etcd Создание кластерных сервисов.
cd /data/containers/etcd
docker compose up -d
Результаты успешного выполнения команды следующие: (кузел 1 Например):
[root@docker-node-1 etcd]# docker compose up -d
[+] Running 1/2
⠸ Network etcd-tier Created 0.4s
✔ Container etcd-s1 Started
[root@docker-node-1 etcd]# docker compose ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
etcd-1 quay.io/coreos/etcd:v3.5.12 "/usr/local/bin/etcd…" etcd 53 seconds ago Up 53 seconds 0.0.0.0:2379-2380->2379-2380/tcp, :::2379-2380->2379-2380/tcp
В этом разделе используются переменные среды для настройки службы etcd.
mkdir -p /data/containers/etcd/data
Содержимое каждого узла разное,Нужно писать отдельно,vi/data/containers/etcd/docker-compose.yml
узел 1 Содержимое файла следующее:
version: '3'
services:
etcd:
container_name: etcd-s1
image: quay.io/coreos/etcd:v3.5.12
environment:
- ETCD_NAME=etcd-1
- ETCD_DATA_DIR=/var/etcd
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://192.168.9.81:2379
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.9.81:2380
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER=etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
- ETCD_INITIAL_CLUSTER_STATE=new
- ETCD_LOGGER=zap
- ETCD_LOG_LeveL=info
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
узел 2 Содержимое файла следующее:
version: '3'
services:
etcd:
container_name: etcd-s1
image: quay.io/coreos/etcd:v3.5.12
environment:
- ETCD_NAME=etcd-1
- ETCD_DATA_DIR=/var/etcd
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://192.168.9.82:2379
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.9.82:2380
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER=etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
- ETCD_INITIAL_CLUSTER_STATE=new
- ETCD_LOGGER=zap
- ETCD_LOG_LeveL=info
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
узел 3 Содержимое файла следующее:
version: '3'
services:
etcd:
container_name: etcd-s1
image: quay.io/coreos/etcd:v3.5.12
environment:
- ETCD_NAME=etcd-1
- ETCD_DATA_DIR=/var/etcd
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://192.168.9.83:2379
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.9.83:2380
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER=etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
- ETCD_INITIAL_CLUSTER_STATE=new
- ETCD_LOGGER=zap
- ETCD_LOG_LeveL=info
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
Описание специального элемента конфигурации файла конфигурации:
ETCD_INITIAL_ADVERTISE_PEER_URLS
адресвсеузел Всеосуществлять Следующая команда,Заканчивать etcd Создание кластерных сервисов.
cd /data/containers/etcd
docker compose up -d
[root@docker-node-1 etcd]# docker compose ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
etcd-1 quay.io/coreos/etcd:v3.5.12 "/usr/local/bin/etcd…" etcd 53 seconds ago Up 53 seconds 0.0.0.0:2379-2380->2379-2380/tcp, :::2379-2380->2379-2380/tcp
Чтобы проверить доступность службы etcd, найдите дополнительный компьютер для установки клиентского инструмента etcd для проверочного тестирования.
cd /srv
wget https://github.com/etcd-io/etcd/releases/download/v3.5.12/etcd-v3.5.12-linux-amd64.tar.gz
tar xvf etcd-v3.5.12-linux-amd64.tar.gz
cd etcd-v3.5.12-linux-amd64
# ./etcdctl --endpoints=192.168.9.81:2379,192.168.9.82:2379,192.168.9.83:2379 --write-out=table endpoint health
+-------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+-------------------+--------+-------------+-------+
| 192.168.9.81:2379 | true | 6.698562ms | |
| 192.168.9.82:2379 | true | 20.894522ms | |
| 192.168.9.83:2379 | true | 21.585328ms | |
+-------------------+--------+-------------+-------+
# ./etcdctl --endpoints=192.168.9.81:2379,192.168.9.82:2379,192.168.9.83:2379 --write-out=table endpoint status
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| 192.168.9.81:2379 | ee1780cf52566749 | 3.5.12 | 20 kB | true | false | 2 | 13 | 13 | |
| 192.168.9.82:2379 | 94e339f5d245a36b | 3.5.12 | 20 kB | false | false | 2 | 13 | 13 | |
| 192.168.9.83:2379 | 247803a54771eb27 | 3.5.12 | 20 kB | false | false | 2 | 13 | 13 | |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
# ./etcdctl --endpoints=192.168.9.81:2379,192.168.9.82:2379,192.168.9.83:2379 --write-out=table member list
+------------------+---------+--------+--------------------------+--------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+--------+--------------------------+--------------------------+------------+
| 247803a54771eb27 | started | etcd-3 | http://192.168.9.83:2380 | http://192.168.9.83:2379 | false |
| 94e339f5d245a36b | started | etcd-2 | http://192.168.9.82:2380 | http://192.168.9.82:2379 | false |
| ee1780cf52566749 | started | etcd-1 | http://192.168.9.81:2380 | http://192.168.9.81:2379 | false |
+------------------+---------+--------+--------------------------+--------------------------+------------+
# Запись данных
# ./etcdctl --endpoints=192.168.9.81:2379,192.168.9.82:2379,192.168.9.83:2379 put foo bar
OK
# Чтение данных
# ./etcdctl --endpoints=192.168.9.81:2379,192.168.9.82:2379,192.168.9.83:2379 get foo
foo
bar
Все операции по всему тексту я скомпилировал в автоматизированные скрипты.
Описание скрипта автоматизации:
писатьразвертывать Скрипт deploy-etcd-cluser-conf.sh
#!/bin/bash
# author:@Квалифицирован в эксплуатации и обслуживании
set -e
# настраивать etcd Название службы, необходимо изменить
etcd_name=${1:-"etcd-1"}
# настраивать etcd Служитьиностранный IP, необходимо изменить (заполнить etcd Контейнер расположен там, где узел обеспечивает Служить внешнему миру. IP)
etcd_client_ip=${2:-"0.0.0.0"}
# настраивать etcd Информация о кластере инициализации должна быть изменена.
etcd_initial_cluster=${3:-"etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380"}
# настраивать containers Базовый каталог, дополнительная модификация
docker_container_dir=${4:-"/data/containers"}
# создатель Базового каталога
mkdir -p ${docker_container_dir}/etcd/{data,config}
# создавать etcd Конфигурационный файл
function deploy_etcd_config(){
cat > ${docker_container_dir}/etcd/config/etcd.conf.yml <<-EOF
name: ${etcd_name}
data-dir: /var/etcd
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://${etcd_client_ip}:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://${etcd_client_ip}:2380
initial-cluster: ${etcd_initial_cluster}
initial-cluster-token: etcd-cluster
initial-cluster-state: new
logger: zap
log-level: info
#log-outputs: stderr
EOF
}
# создавать docker-compose документ
function deploy_compose_config(){
cat > ${docker_container_dir}/etcd/docker-compose.yml <<-EOF
version: '3'
services:
etcd:
container_name: ${etcd_name}
image: quay.io/coreos/etcd:v3.5.12
command: /usr/local/bin/etcd --config-file=/var/lib/etcd/conf/etcd.conf.yml
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- ${DOCKER_VOLUME_DIRECTORY:-.}/config/etcd.conf.yml:/var/lib/etcd/conf/etcd.conf.yml
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
EOF
}
# создавать etcd Служить
function deploy_etcd(){
cd ${docker_container_dir}/etcd
docker compose up -d
}
# проверять etcd Служить
function check_etcd(){
cd ${docker_container_dir}/etcd
docker compose ps
}
echo -e "\033[1;32m [1].Deploy etcd config.\n \033[0m"
deploy_etcd_config
echo -e "\033[1;32m [2].Deploy docker compose config.\n \033[0m"
deploy_compose_config
echo -e "\033[1;32m [3].Deploy etcd service.\n \033[0m"
deploy_etcd
echo -e "\033[1;32m [4].Check etcd service status. \033[0m"
check_etcd
использовать Скриптразвертывать etcd кластер.
./deploy-etcd-cluster-conf.sh etcd-1 192.168.9.81 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
./deploy-etcd-cluster-conf.sh etcd-2 192.168.9.82 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
./deploy-etcd-cluster-conf.sh etcd-3 192.168.9.83 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
писатьразвертывать Скрипт deploy-etcd-cluster-env.sh
#!/bin/bash
# author:@Квалифицирован в эксплуатации и обслуживании
set -e
# настраивать etcd Название службы, необходимо изменить
etcd_name=${1:-"etcd-1"}
# настраивать etcd Служитьиностранный IP, необходимо изменить (заполнить etcd Контейнер расположен там, где узел обеспечивает Служить внешнему миру. IP)
etcd_client_ip=${2:-"0.0.0.0"}
# настраивать etcd Информация о кластере инициализации должна быть изменена.
etcd_initial_cluster=${3:-"etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380"}
# настраивать containers Базовый каталог, дополнительная модификация
docker_container_dir=${4:-"/data/containers"}
# создатель Базового каталога
mkdir -p ${docker_container_dir}/etcd/data
# создавать docker-compose документ
function deploy_compose_config(){
cat > ${docker_container_dir}/etcd/docker-compose.yml <<-EOF
version: '3'
services:
etcd:
container_name: ${etcd_name}
image: quay.io/coreos/etcd:v3.5.12
environment:
- ETCD_NAME=${etcd_name}
- ETCD_DATA_DIR=/var/etcd
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://${etcd_client_ip}:2379
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://${etcd_client_ip}:2380
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER=${etcd_initial_cluster}
- ETCD_INITIAL_CLUSTER_STATE=new
- ETCD_LOGGER=zap
- ETCD_LOG_LeveL=info
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd
- "/etc/localtime:/etc/localtime:ro"
ports:
- 2379:2379
- 2380:2380
restart: always
networks:
default:
name: etcd-tier
driver: bridge
EOF
}
# создавать etcd Служить
function deploy_etcd(){
cd ${docker_container_dir}/etcd
docker compose up -d
}
# проверять etcd Служить
function check_etcd(){
cd ${docker_container_dir}/etcd
docker compose ps
}
echo -e "\033[1;32m [1].Deploy docker compose config.\n \033[0m"
deploy_compose_config
echo -e "\033[1;32m [2].Deploy etcd service.\n \033[0m"
deploy_etcd
echo -e "\033[1;32m [3].Check etcd service status. \033[0m"
check_etcd
использовать Скриптразвертывать etcd кластер.
./deploy-etcd-cluster-env.sh etcd-1 192.168.9.81 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
./deploy-etcd-cluster-env.sh etcd-2 192.168.9.82 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
./deploy-etcd-cluster-env.sh etcd-3 192.168.9.83 etcd-1=http://192.168.9.81:2380,etcd-2=http://192.168.9.82:2380,etcd-3=http://192.168.9.83:2380
На основе того, что вы узнали из этой статьи, пожалуйста, выполните следующие практические задания.
В этой статье представлена информация, основанная на coreos Официально предоставлено etcd зеркалоразвертывать etcd Подробный процесс и меры предосторожности для кластерных служб. Основное содержание резюмируется следующим образом:
Получите практическое видео из этой статьи.(пожалуйста, обрати внимание,Асинхронный выпуск документального видео,пожалуйста, сначаласосредоточиться на)
Отказ от ответственности:
Если вам понравилась эта статья, поделитесь, добавьте в избранное, поставьте лайк и прокомментируйте! Пожалуйста, продолжайте обращать внимание @ Опытные в эксплуатации и обслуживании, вовремя смотрите больше хороших статей!
Добро пожаловать присоединиться «Навыки эксплуатации и технического обслуживания · Практический учебный лагерь Cloud Native» , получи больше Практические навыки эксплуатации и обслуживания KubeSphere, Kubernetes и облачных технологий.
Заявление об авторских правах