Harbor简介
Harbor 是一个企业级的 Docker 镜像仓库,提供安全的存储、交付和运行 Docker 镜像,它具有高可用性、多实例支持以及共享存储等功能,可以帮助企业更好地管理 Docker 镜像,本文将介绍如何搭建 Harbor 多实例高可用共享存储。
环境准备
1、硬件环境
部署 Harbor 需要至少两台服务器,一台作为负载均衡器(Master),另一台作为数据节点(Node),这两台服务器都需要满足以下要求:
CPU:4核及以上
内存:8G及以上
磁盘空间:至少20G
网络:千兆以太网或更高
2、软件环境
Docker:版本 17.09 及以上
Harbor:版本 2.3.0 及以上
etcd:版本 3.4.12 及以上
MySQL:版本 5.7.16 及以上
Python:版本 3.6 及以上
Nginx:版本 1.13.0 及以上
搭建步骤
1、安装并配置 etcd
etcd 是 Harbor 的核心组件,用于存储集群元数据,首先在 Master 服务器上安装 etcd:
wget https://github.com/etcd-io/etcd/releases/download/v3.4.12/etcd-v3.4.12-linux-amd64.tar.gz tar xvf etcd-v3.4.12-linux-amd64.tar.gz cd etcd-v3.4.12-linux-amd64 sudo mv etcd* /usr/local/bin/
在 Node 服务器上安装 etcd:
wget https://github.com/etcd-io/etcd/releases/download/v3.4.12/etcd-v3.4.12-linux-amd64.tar.gz tar xvf etcd-v3.4.12-linux-amd64.tar.gz cd etcd-v3.4.12-linux-amd64 sudo mv etcd* /usr/local/bin/
在两台服务器上分别创建 etcd 配置文件 /etc/etcd/etcd.conf
,内容如下:
ETCD_NAME="default" ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://localhost:2380" ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" ETCD_INITIAL_CLUSTER="default=http://localhost:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="my-etcd-token" ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
启动 etcd 服务:
sudo systemctl enable --now etcd
2、安装并配置 MySQL
在 Master 服务器上安装 MySQL:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.gz tar xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.gz cd mysql-8.0.26-linux-glibc2.12-x86_64/usr/local/bin/ && sudo install mysqld --prefix=/usr/local/mysql --sysconfdir=/etc/mysql --datadir=/var/lib/mysql --librarydir=/usr/local/mysql/lib --with-extra-charset=utf8mb4 --with-ssl --with-zlib --with-plugin-dir=/usr/local/mysql/plugin --skip-testdb --basedir=/usr/local/mysql --user=mysql --bind-address=localhost --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password --default-storage-engine=InnoDB --default-tmpdir=/tmp --log_error=FILE --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --skip-networking &> /var/log/mysqld.log & tail -f /var/log/mysqld.log & wait $! || echo "MySQL installation failed!" && exit 1;
在 Node 服务器上安装 MySQL:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.gz tar xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.gz cd mysql-8.0.26-linux-glibc2.12-x86_64/usr/local/bin && sudo install mysqld --prefix=/usr/local/mysql --sysconfdir=/etc/mysql --datadir=/var/lib/mysql --librarydir=/usr/local/mysql/lib --with-extra-charset=utf8mb4 --with-ssl --with-zlib --with-plugin-dir=/usr/local/mysql/plugin --skip-testdb --basedir=/usr/local/mysql --user=mysql --bind-address=localhost --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password --default-storage-engine=InnoDB --default-tmpdir=/tmp --log_error=FILE --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --skip-networking &> /var/log/mysqld.log & tail -f /var/log/mysqld.log & wait $! || echo "MySQL installation failed!" && exit 1;
在两台服务器上分别创建 MySQL 配置文件 ~/my.cnf
,内容如下:
Master 服务器:
[mysqld] datadir=//var//lib//mysql//master//data//home//root//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master//data//haproxy//master\ socket=\\ //var\ //lib\ //mysql\ //master //socket\ //home\ //root\ //data //haproxy\ //master\ port=\ 3306\ datadir=\ \\ //var\ //lib\ //mysql //master\ //data\ //home\ //root //data\ //haproxy\ //master\ //data\ //haproxy //master\ //data\ //haproxy\ //master\ //data\ //haproxy\ //master\ //data\ //haproxy\ //master\ //data\ //haproxy
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)