基于minio存储,容器化部署高可用docker-registry

基于minio存储,容器化部署高可用docker-registry

minio部署

根据部署方式不同,支持几种方式,二进制文件部署,docker容器部署,kubenetes集群部署

根据集群规划,可以分为单节点,分布式

本文档主要介绍后两种部署方法,docker容器部署分布式minio集群和kubenetes集群部署minio分布式集群

docker容器部署分布式minio集群

部署需求

环境:四台x86服务器

minio镜像

mc镜像

keepalived镜像

docker-registry镜像

占用宿主机端口:9000

磁盘:/minio ,四节点都需要创建

! ! 以下所有命令均需要在四个节点执行 ! !

创建持久化目录

#四节点四个磁盘路径 /minio 作为minio容器集群的存储路径

mkdir /minio

#config作为minio的配置路径

mkdir /etc/config
启动minio容器
#容器使用宿主机网络,容器9000端口映射宿主机9000端口,容器名为minio,访问密码为admin/xxxxxxxx,将宿主机目录/minio挂载至容器的/data目录作为存储路径,使用s3兼容模式启动minio

docker run --network=host -d -p 9000:9000 --name minio \
  -e "MINIO_ACCESS_KEY=admin" \
  -e "MINIO_SECRET_KEY=xxxxxxxx" \
  -v /minio:/data \
  -v /etc/config:/root/.minio \
minio/minio:1.0.0 server --compat \
http://10.x.x.1:9000/data \
http://10.x.x.2:9000/data \  
http://10.x.x.3:9000/data \
http://10.x.x.4:9000/data 

注:

# --network=host

docker参数,容器使用宿主机网络

# -d

docker参数,后台运行容器

# -p 9000:9000

docker参数,将容器9000端口映射至主机9000端口

# -e

docker参数,传入环境变量MINIO_ACCESS_KEY和MINIO_SECRET_KEY,为minio登录的用户名和密码

# -v

docker参数,将本机/minio挂载为容器内的/data

# --compat

minio参数,启动兼容s3模式

下图为启动命令及成功启动后返回

验证

页面打开minio登录网址 http://10.x.x.1:9000、http://10.x.x.2:9000、http://10.x.x.3:9000、http://10.x.x.4:9000

输入用户名密码
登录后可看到minio管理页面

点击右下角红色加号按钮,创建test buket测试
!
上传文件测试后,查看本地存储

对应路径下已产生test文件夹和上传测试文件,minio启动成功

docker-registry对接minio部署

在创建好容器化minio的分布式集群后,开始部署docker-registry并对接minio

安装keepalived

创建keepalived配置文件(所用minio容器节点都需要执行)
mkdir /etc/keepalived
创建检测脚本
cat>> /etc/keepalived/check.sh <<EOF

#!/bin/bash

a=`cat /etc/keepalived/keepalived.conf | grep -A 1 virtual_ipaddress | sed -n '2p'| awk -F"." '{print$1}'`

b=`cat /etc/keepalived/keepalived.conf | grep -A 1 virtual_ipaddress | sed -n '2p'| awk -F"." '{print$2}'`

c=`cat /etc/keepalived/keepalived.conf | grep -A 1 virtual_ipaddress | sed -n '2p'| awk -F"." '{print$3}'`

checkip=`echo ${a}.${b}.${c}`

ip=`ip a| grep $checkip | grep inet |sed -n '1p' | awk -F" " '{print$2}' | awk -F"/" '{print$1}'`

result=`curl http://${ip}:9000 | grep "Access Denied"`

if [ "$result" != "" ];then
  exit 0
else
  exit 1
fi
EOF
主节点配置文件(可任选minio其一容器节点为主节点)
cat>> /etc/keepalived/keepalived.conf <<EOF

vrrp_script chk_apiserver {
    script "/etc/keepalived/check.sh"
    interval 5
    fall 2
}

vrrp_instance MAIN {
#state区分主从节点master为主节点,backup为从节点
  state MASTER
#interfacec 为vip绑定的宿主机网卡
  interface eth0
#virtual_router_id同keepalived集群保持一致
  virtual_router_id 92
#集群节点间通信时间
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass xxxxxxxx
  }
#绑定vip地址,应使用未被占用的ip地址
  virtual_ipaddress {
    10.x.x.x
  }
  track_script {
      chk_apiserver
  }
}
EOF
从节点配置文件(可任选minio其一容器节点为主节点)
cat>> /etc/keepalived/keepalived.conf <<EOF

vrrp_script chk_apiserver {
    script "/etc/keepalived/check.sh"
    interval 5
    fall 2
}

vrrp_instance MAIN {
#state区分主从节点master为主节点,backup为从节点
  state BACKUP
#interfacec 为vip绑定的宿主机网卡
  interface eth0
#virtual_router_id同keepalived集群保持一致
  virtual_router_id 92
#集群节点间通信时间
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass xxxxxxxx
  }
#绑定vip地址,应使用未被占用的ip地址
  virtual_ipaddress {
    10.x.x.x
  }
  track_script {
      chk_apiserver
  }
}
EOF
启动keepalived(所有节点执行)
docker run -d --name keepalived-minio --net=host --cap-add NET_ADMIN -v /etc/keepalived/:/etc/keepalived/ keepalived/keepalived:v1.2
检测keepalived+minio

使用代理后的vip:9000登录minio

通过vip可正常访问minio,并进行文件的上传下载

部署minio客户端mc

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。

安装mc

创建mc执行脚本
mkdir /etc/mc/
cat >> /etc/mc/mc-init.sh << EOF
mc config host add s3 http://minio地址:9000 用户名 密码 S3v4
mc mb s3/registry
EOF
启动mc
docker run -it -v  /etc/mc/:/etc/mc/ --name minio-mc --entrypoint=/bin/sh ,mc/mc:1.0.0 -c 'sh /etc/mc/mc-init.sh'

对接registry

创建docker-registry目录
mkdir /etc/registry
创建docker-registry配置文件
touch /etc/registry/config.yml
cat>> /etc/registry/config.yml <<EOF
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  s3:
    #minio的用户名和密码
    accesskey: admin
    secretkey: xxxxxxxx
    #region参数可随意
    region: us-east-1
    #对外访问地址,填写keepalived中对外暴露vip地址
    regionendpoint: http://10.x.x.x:9000
    #minio中的bucket名称
    bucket: registry
    encrypt: false
    secure: false
    v4auth: true
    chunksize: 5242880
    rootdirectory: /
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
EOF
选择启动镜像并启动
docker run -d -v /etc/registry:/etc/registry -p 5000:5000 --restart=always --name registry {{registry_image}}

功能验证

在这里插入图片描述

镜像可以成功上传,并且minio界面也出现对应docker存储,本地目录下也出现对应路径,验证测试成功。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值