Skip to main content

使用 Docker Compose 安装

2. 服务器初始化#

安装 Python 2.x

2.1 系统磁盘分区#

# 磁盘分区格式化操作为高危,要小心
# ext4 格式化, 一般目录盘是 vdb, 因为 vda 是系统的根目录, 可以 cat /etc/fstab 看看
$ mkfs.ext4 /dev/vdb
# 找到 UUID, 如
$ blkid
/dev/sr0: UUID="2021-07-22-16-19-03-00" LABEL="config-2" TYPE="iso9660"
/dev/vda1: UUID="0fb6f32a-9a3c-4a88-b00e-d6a0cd7611c4" TYPE="ext4"
/dev/vdb: UUID="98edad31-77b1-4bae-9047-8fff9f573dde" TYPE="ext4"
# 修改 /etc/fstab 挂载分区至 /data,否则系统重启后不会自动挂盘
UUID=98edad31-77b1-4bae-9047-8fff9f573dde /data ext4 noatime 0 2

2.2 基于 setup-tools 部署#

2.2.1 生成 setup-tools 安装包#

make build.setup-tools -> ops/dist/ur.tar.gz

2.2.2 使用 setup-tools#

# 把 `ur.tar.gz` copy 至某一台服务器,一般是第一台应用服务器 `/data/` 下
# 解压为 `/data/setup-tools/`
$ cd /data/setup-tools/
# 修改 cli.env 里 HOST_CONFIG_PATH
$ vim cli.env
$ . cli.env
# 完成 setup-tools 初始化,使用时只需要更改 -c 参数即可, 如
$ cli scheduler -c conf/check-system-job.yml -p conf/params.yml
$ cli scheduler -c conf/init-system-job.yml -p conf/params.yml
# host.yml 和 params.yml 准备之后执行
$ sh -x ops/install/script/update_params_to_prod.sh

部署时可按以下顺序执行,资源有限因此会有共用的情况,默认方案以七台服务器作方案

Job / Config类别说明
host.yml (必须)主机配置把需要编排的服务器资源录入此,注意服务器不能同时成为 nfs server 和 client
params.yml (必须)参数变量执行 Job 所需要的一些参数
update_params_to_prod.sh (必须)执行脚本重要 依赖 params.yml, 把变量更新到 datebase.php, env, filebeat, lsyncd
init-system-job.yml (必须)所有服务器初始化系统,包括时钟同
app-server-job.yml (必须)应用服务器docker-compose 方案, 多台应用服务器需要手动更改 upstream
(TODO) app-server-swarm-job.yml应用服务器后续希望只使用 Swarm Mode, 支持多台服务器
ssh-copy-id-job.yml (应用服务器节点 >= 2 时必须)应用服务器lsyncd ssh 公钥认证,同步应用服务器导入导出附件目录,以达到应用层无状态
(TODO, ) nfs-backup-job.yml (服务器总数量 >=2 时建议)NFS Server按天备份附件,DB,ES snapshot
redis-server-job.yml (必须)Redis Server单节点
mysql-server-job.yml (必须)MySQL Server主从
elasticsearch-server-job.yml (必须)Elasticsearch Server最多支持三节点
check-system-job.yml (检测时用)检测系统CPU, 内存, 磁盘, 网络, 时钟同步等情况,执行后可以统一从日志里查看
check-resource-job.yml (检测时用)检测资源Redis, MySQL, ES 等可用性状态,执行后可以统一从日志里查看

2.3 Docker Compose#

系统初始化#

yum install -y libseccomp-devel

安装 Docker 与 Docker Compose#

清理旧容器数据(可选)#

docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
rm -rf mysql/data elasticsearch/data redis/data rabbitmq/data/rabbitmq
docker-compose -f docker-compose-paas.yaml down -v
docker-compose -f docker-compose-paas.yaml rm -vf

启动存储服务#

docker-compose -f docker-compose-paas.yaml up

启动应用服务#

docker-compose -f docker-compose.yaml up

2.5 数据初始化#

# 初始化 MySQL 和 ES
$ sh -x /data/docker_env/init.sh

参考 seed.sql, 初始账号:demo / 82fd7ff892db8

2.6 部署完成#

至此,部署完成,setup-tools 其它可以用脚本批处理之,但分步执行可以观察每个 job 的结果,更为放心一些。而 Docker Swarm Mode 设置目前为手动配置。

3. 日常运维杂记#

3.1 重启相关#

  • 部署全面完成,建议全部服务器重启一次看,看看系统各种服务是否运行 OK,防止对比机子重启导致问题