1、环境准备
环境:Ubuntu
软件:minio、etcd、coredns
集群 | minio集群1 | minio集群2 |
---|---|---|
IP | 192.168.41.103、192.168.41.104 | 192.168.41.105、192.168.41.106 |
etcd、coredns | 192.168.41.101 | 192.168.41.101 |
2、搭建单机etcd
cd /usr/local
wget https://github.com/etcd-io/etcd/releases/download/v3.5.2/etcd-v3.5.2-linux-amd64.tar.gz
tar zxf etcd-v3.5.2-linux-amd64.tar.gz
cp etcd /usr/bin/
cp etcdctl /usr/bin/
mkdir -p /usr/local/config
3、简单启动etcd
nohup ./etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379' &
4、搭建coredns
wget https://github.com/coredns/coredns/releases/download/v1.9.0/coredns_1.9.0_linux_amd64.tgz
tar zxf coredns_1.9.0_linux_amd64.tgz
mv coredns /usr/bin
mkdir /etc/coredns
5、添加主配置文件
vim /etc/coredns/Corefile
.:53 { #监听tcp和udp的53端口
etcd { #配置启用etcd插件,后面可以指定域名,例如 etcd test.com {
stubzones #启用存根区域功能。 stubzone仅在位于指定的第一个区域下方的etcd树中完成
path /skydns #etcd里面的路径 默认为/skydns,以后所有的dns记录就是存储在该存根路径底下
endpoint http://localhost:2379 # etcd访问地址
#upstream设置要使用的上游解析程序解决指向外部域名的在etcd(认为CNAME)中找到的外部域名。
upstream /etc/resolv.conf
fallthrough #如果区域匹配但不能生成记录,则将请求传递给下一个插件
#tls CERT KEY CACERT #可选参数,etcd认证证书设置
}
prometheus # 监控插件
cache 160
loadbalance # 负载均衡,开启DNS记录轮询策略
forward . /etc/resolv.conf #上面etcd未查询到的请求进行转发,设置代理或转发可根据环境实现
#proxy . /etc/resolv.conf #上面etcd未查询到的请求转发给设置的DNS服务器解析
log #打印日志
error #错误日志
}
6、简单启动etcd
nohup /usr/bin/coredns -conf /etc/coredns/Corefile > /tmp/coredns.log 2>&1 &
7、测试
dig @localhost +short www.baidu.com
8、搭建minio集群
(1)minio集群1
cd /usr/local
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio #下载地址
chmod a+x minio #赋予执行权限
mkdir -p /data/minio
mkdir -p /data/minio/log
(2)配置脚本实现简单启动
#!/bin/bash
export MINIO_ACCESS_KEY=ucasadmin #设置登录用户名
export MINIO_SECRET_KEY=ucasadmin #设置登录密码
export MINIO_ETCD_ENDPOINTS="http://192.168.41.101:2379" #配置etcd连接
export MINIO_PUBLIC_IPS=192.168.41.103,192.168.41.104 #此处需要配置上Minio-1 集群的所有ip
export MINIO_DOMAIN=bo.test.com #此处为访问域名
/usr/local/minio server http://192.168.41.{103...104}/data/minio/data{1...2} --console-address :9000 --address :80 >/data/minio/log/minio.log 2>&1 &
(3)minio集群2
cd /usr/local
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio #下载地址
chmod a+x minio #赋予执行权限
mkdir -p /data/minio/
mkdir -p /data/minio/log
(4)配置脚本实现简单启动
#!/bin/bash
export MINIO_ACCESS_KEY=ucasadmin #设置登录用户名
export MINIO_SECRET_KEY=ucasadmin #设置登录密码
export MINIO_ETCD_ENDPOINTS="http://192.168.41.101:2379" #配置etcd连接
export MINIO_PUBLIC_IPS=192.168.41.105,192.168.41.106 #此处需要配置上Minio-1 集群的所有ip
export MINIO_DOMAIN=bo.test.com #此处为访问域名
/usr/local/minio server http://192.168.41.{105...106}/data/minio/data{1...2} --console-address :9000 --address :80 >/data/minio/log/minio.log 2>&1 &
然后就可以启动访问了
9、简单介绍
搭配etcd和coredns实现联邦集群可通过域名解析将数据注册到etcd中,使用coredns进行轮询分发,扩展性高,后期扩展可将集群指向etcd将信息注册到其中便可通过coredns进行分发解析,方便了集群的扩展和缩减
10、minio的优点
高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率
可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
云原生:容器化、基于K8S的编排、多租户支持
兼容性:兼容S3 API这一事实上的对象存储标准,最先支持S3 Select
简单:这一设计原则让MinIO不容易出错、更快启动
支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据
11、实现功能比较简单,后续将更新整个集群的搭建及维护流程