JayGao

JayGao的个人博客,分享技术,记录生活,感谢您的支持与关注。


  menu
29 文章
0 浏览
1 当前访客
ღゝ◡╹)ノ❤️

minio分布式集群搭建

准备工作

  1. 安装centos7.9.2009版本的linux系统,关闭selinux和firewalld

  2. 克隆8台物理机作为minio的集群机器

  3. 克隆2物理机用作配置高可用+负载均衡,安装keepalived配置高可用和安装nginx配置负载均衡(还有反向代理)

  4. 配置完成10台物理机器的静态IP和DNS,修改完成主机名和hosts文件

  5. 10台机器同时安装docker,并设置开机启动

  6. 修改主机名:minio集群机器名字:minio1-8;2台nginx机器:nginx1-2(keepalived和nginx在同一台机器上)

  7. 修改hosts,如下:(如果有内部的DNS服务器,映射了内部的域名,可以不配置)

    • 192.168.1.61 minio1
    • 192.168.1.62 minio2
    • 192.168.1.63 minio3
    • 192.168.1.64 minio4
    • 192.168.1.65 minio5
    • 192.168.1.66 minio6
    • 192.168.1.67 minio7
    • 192.168.1.68 minio8
    • 192.168.1.71 nginx1
    • 192.168.1.72 nginx2
    • 192.168.1.80 www.minio-api.com #VIP虚拟主机,可以和下面的是同一台机器,也可以分开
    • 192.168.1.80 www.minio-console.com #VIP虚拟主机,可以和上面的是同一台机器,也可以分开
  8. minio我使用了“www.minio-api.com”和“www.minio-console.com”来模拟域名;因为minio的"MINIO_SERVER_URL"和"MINIO_BROWSER_REDIRECT_URL",只能使用域名+port或者ip+port模式,所以这里为了好记使用默认端口80和不同的域名来区分

  9. minio集群机器拉取镜像:docker pull minio/minio:latest

  10. 2台nginx机器拉去镜像:docker pull nginx:latest;keepalived使用原生安装或docker安装或自定义制作docker镜像(因为docker仓库中的版本很老了,所以我这里采用的自定义),建议原生安装就行了

  11. 如果是非 docker 方式集群,原生linux,操作类似,下载linux二进制文件进行启动,具体参考官网说明

  12. 8台minio集群物理机需要在同一网段内,用不同的云服务器测试失败(可能是云服务器端口和权限开放问题),同一云服务器可以使用云服务器内部的ip地址(一般都是内网通畅的)

启动容器

8台物理机同时启动同一docker容器,命令如下:

docker run -itd --name minio --restart always --net=host --privileged=true -e "MINIO_ROOT_USER=root" -e "MINIO_ROOT_PASSWORD=admin123" -e "MINIO_SERVER_URL=http://www.minio-api.com" -e "MINIO_BROWSER_REDIRECT_URL=http://www.minio-console.com" -e "TZ=Asia/Shanghai" -v /home/minio/data1:/data1 -v /home/minio/data2:/data2 -v /home/minio/data3:/data3 -v /home/minio/data4:/data4 -v /home/minio/data5:/data5 -v /home/minio/data6:/data6 -v /home/minio/data7:/data7 -v /home/minio/data8:/data8 -v /home/minio/config:/root/.minio minio/minio server http://minio{1...8}/data{1...8} --console-address ":9090" -address ":9000"
  1. 命令解释:
  2. -it:命令行交互模式
  3. -d:后台运行
  4. --name minio:容器名minio
  5. --restart always:容器开机启动,也即容器随着docker服务启动而启动,如果docker服务是开机启动,就是开机启动
  6. --net=host:docker容器使用主机网络模式
  7. --privileged=true:使用root权限
  8. -e "":指定环境变量,比如:用户名、密码、时区
  9. -e "MINIO_SERVER_URL=http://负载均衡机器域名/IP:端口":设置api访问域名
  10. -e "MINIO_BROWSER_REDIRECT_URL=http://负载均衡机器域名/IP:端口" :设置控制台访问域名
  11. -v /xxx:/ccc:挂在容器目录到宿主机中
  12. http://minio{1...8}/data{1...8}:指定服务器和磁盘
  13. --console-address ":9090" -address ":9000"指定控制台端口和api端口

配置nginx

目的是提供一个主入口,让所有的服务都能分发到。

nginx.conf配置如下:


#运行nginx的用户
user  nginx;
#启动进程设置成和CPU数量相等
worker_processes  1;
#全局错误日志及PID文件的位置
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

#工作模式及连接数上限
events {
	#单个后台work进程最大并发数设置为1024
    worker_connections  1024;
}


http {
	#设定mime类型
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
	#设定日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

	#设置连接超时的事件
    keepalive_timeout  65;
	#开启GZIP压缩
    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

default.conf,配置如下:

upstream minioconsoleserver{
    server 192.168.1.61:9090 weight=1; #负载均衡配置,策略权重
    server 192.168.1.62:9090 weight=1;
    server 192.168.1.63:9090 weight=1;
    server 192.168.1.64:9090 weight=1;
    server 192.168.1.65:9090 weight=1;
    server 192.168.1.66:9090 weight=1;
    server 192.168.1.67:9090 weight=1;
    server 192.168.1.68:9090 weight=1;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  www.minio-console.com;
    location / { 
        proxy_pass              http://minioconsoleserver;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        REMOTE-HOST $remote_addr;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-NginX-Proxy true;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header              ServerIP $upstream_addr; #在响应头中显示实际负载的服务IP和端口
        add_header              ServerCode $upstream_status; #在响应头中显示实际负载的状态码
    }
}
upstream minioapiserver{
        server 192.168.1.61:9000 weight=1;
        server 192.168.1.62:9000 weight=1;
        server 192.168.1.63:9000 weight=1;
        server 192.168.1.64:9000 weight=1;
        server 192.168.1.65:9000 weight=1;
        server 192.168.1.66:9000 weight=1;
        server 192.168.1.67:9000 weight=1;
        server 192.168.1.68:9000 weight=1;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  www.minio-api.com;
    location / { 
        proxy_pass              http://minioapiserver;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        REMOTE-HOST $remote_addr;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-NginX-Proxy true;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header              ServerIP $upstream_addr; #在响应头中显示实际负载的服务IP和端口
        add_header              ServerCode $upstream_status; #在响应头中显示实际负载的状态码
    }
}

启动nginx容器

docker run -itd --name=nginx -p 80:80 -p 443:443 --restart=always -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf.d/:/etc/nginx/conf.d/ -v /home/nginx/logs/:/var/log/nginx/ -v /home/nginx/html/:/usr/share/nginx/html -e TZ=Asia/Shanghai nginx

注意:这里两台nginx配置一模一样,这里就不赘述

配置keepalived

keepalived配置:原生安装和docker安装、自定义制作docker镜像

安装步骤不赘述,安装好了之后编写配置文件,如下:

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 75
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass admin123
    }
    virtual_ipaddress {
        192.168.1.75
    }
}


vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 75
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass admin123
    }
    virtual_ipaddress {
        192.168.1.75
    }
}

标题:minio分布式集群搭建
作者:JayGao
地址:https://www.jaygao.top/articles/2022/10/31/1667204236090.html
版权:版权JayGao所有,如需转载,请注明出处
捐赠: