企业网站改版的意义,响应式网站建设新闻,建立网站准备工作,装修房子的效果图参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com)
【运维】docker-compose安装minio集群-CSDN博客 Minio 是个基于 Golang 编写的开源对象存储套件#xff0c;虽然轻量#xff0c;却拥有着不错的性能
中文地址#xff1a;MinIO | 用于AI的S3 …参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com)
【运维】docker-compose安装minio集群-CSDN博客 Minio 是个基于 Golang 编写的开源对象存储套件虽然轻量却拥有着不错的性能
中文地址MinIO | 用于AI的S3 Kubernetes原生对象存储
官网地址MinIO | High Performance, Kubernetes Native Object Storage
对象存储服务Object Storage ServiceOSS是一种海量、安全、低成本、高可靠的云存储服务适合存放任意类型的文件。容量和处理能力弹性扩展多种存储类型供选择全面优化存储成本。当然 Minio 除了直接作为对象存储使用还可以作为云上对象存储服务的网关层无缝对接到 Amazon S3、MicroSoft Azure。
一 准备工作
1、三台机器 配置 vim /etc/hosts
192.168.1.244 minio4 192.168.1.243 minio3 192.168.1.242 minio2 验证 查看docker 查看 docker-compose -v 如果没有则安装
sudo yum install docker-compose 二、编写docker-compose.yml 文件
整体目录结构如下 希望 nginx 在243上
有两个类型的docker-compose.yml 带nginx和不带nginx的具体如下
1、不带nginx242和244
version: 3
services:minio:image: quay.io/minio/miniocontainer_name: minio-node2hostname: minio2expose:- 19000- 19001environment:- MINIO_ROOT_USERminio- MINIO_ROOT_PASSWORDminio123volumes:- ./data-1:/data1- ./data-2:/data2command: server --console-address :19001 --address :19000 http://minio{2...4}/data{1...2}privileged: truehealthcheck:test: [CMD, curl, -f, http://localhost:19000/minio/health/live]interval: 30stimeout: 20sretries: 3extra_hosts:- minio2:192.168.1.242- minio3:192.168.1.243- minio4:192.168.1.244restart: alwaysnetwork_mode: host
version: 3
services:minio:image: quay.io/minio/miniocontainer_name: minio-node4hostname: minio4expose:- 19000- 19001environment:- MINIO_ROOT_USERminio- MINIO_ROOT_PASSWORDminio123volumes:- ./data-1:/data1- ./data-2:/data2command: server --console-address :19001 --address :19000 http://minio{2...4}/data{1...2}privileged: truehealthcheck:test: [CMD, curl, -f, http://localhost:19000/minio/health/live]interval: 30stimeout: 20sretries: 3extra_hosts:- minio2:192.168.1.242- minio3:192.168.1.243- minio4:192.168.1.244restart: alwaysnetwork_mode: host 2、带nginx 243
version: 3services:minio:image: quay.io/minio/miniocontainer_name: minio-node3hostname: minio3expose:- 19000- 19001environment:- MINIO_ROOT_USERminio- MINIO_ROOT_PASSWORDminio123volumes:- /home/minio-data1:/data1- /home/minio-data2:/data2command: server --console-address :19001 --address :19000 http://minio{2...4}/data{1...2}privileged: truehealthcheck:test: [CMD, curl, -f, http://localhost:19000/minio/health/live]interval: 30stimeout: 20sretries: 3extra_hosts:- minio2:192.168.1.242- minio3:192.168.1.243- minio4:192.168.1.244restart: alwaysnetwork_mode: hostnginx:image: nginx:1.19.2-alpinehostname: nginxvolumes:- /home/dockerinstall/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf:ro- /home/dockerinstall/nginx/cert/server1.crt:/etc/nginx/ssl/server.crt:ro- /home/dockerinstall/nginx/cert/server1.key:/etc/nginx/ssl/server.key:roports:- 9000:9090- 9001:9091- 443:443 # 添加这一行来映射 443 端口extra_hosts:- minio2:192.168.1.242- minio3:192.168.1.243- minio4:192.168.1.244restart: always
这句话是在 Docker Compose 文件中定义的一个卷 (volume) 映射用于将宿主机上的文件或目录挂载到容器内。具体来说这行代码的意思是
volumes: - 这个关键字表示后面跟着的是一个或多个卷映射。- ./nginx.conf:/etc/nginx/nginx.conf:ro - 这是一个具体的卷映射配置其中包含了三个部分 ./nginx.conf - 表示宿主机上的文件路径即当前目录下的 nginx.conf 文件。:/etc/nginx/nginx.conf - 表示容器内的文件路径即将宿主机上的 nginx.conf 文件挂载到容器内的 /etc/nginx/nginx.conf 路径。:ro - 表示只读权限意味着挂载到容器内的文件只能被读取而不能被修改。
综上所述这行配置的作用是将宿主机当前目录下的 nginx.conf 文件以只读的方式挂载到容器内的 /etc/nginx/nginx.conf 路径。这样做的目的是为了让容器能够使用宿主机提供的 Nginx 配置文件并且确保容器内的进程不能修改这个配置文件。
nginx配置文件如下
user nginx; # 设置 Nginx 运行的用户为 nginx。
worker_processes auto; # 自动确定工作进程的数量通常是根据 CPU 核心数来决定。error_log /var/log/nginx/error.log warn; # 将错误日志记录到指定路径并仅记录警告及以上级别的日志。
pid /var/run/nginx.pid; # 指定 Nginx 进程 ID 文件的路径。events {worker_connections 4096; # 设置每个工作进程的最大并发连接数。
}http {include /etc/nginx/mime.types; # 包含 MIME 类型配置文件。default_type application/octet-stream; # 设置默认 MIME 类型。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; # 启用高效文件传输。keepalive_timeout 65; # 设置保持连接的超时时间。upstream adobe { # 定义了一个名为 adobe 的负载均衡组包含三个服务器。server minio2:19000;server minio3:19000;server minio4:19000;}upstream console { # 定义了一个名为 console 的负载均衡组同样包含三个服务器并使用 ip_hash 进行基于 IP 的会话保持。ip_hash;server minio2:19001;server minio3:19001;server minio4:19001;}# HTTP 服务器块用于重定向 HTTP 到 HTTPSserver {listen 80; # 侦听80端口用于将HTTP请求重定向到HTTPS。server_name 192.168.1.24; # 自己的域名。return 301 https://$host$request_uri; # 将HTTP请求重定向到HTTPS。}# HTTPS 服务器块server {listen 443 ssl; # 侦听443端口用于SSL。listen [::]:443 ssl; # 侦听 IPv6 地址的443端口用于SSL。server_name 192.168.1.243; # 自己的域名。ssl_certificate /etc/nginx/ssl/server1.crt; # SSL 证书文件路径。ssl_certificate_key /etc/nginx/ssl/server1.key; # SSL 私钥文件路径。ssl_session_timeout 5m; # SSL 会话缓存的有效时间。ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 支持的 SSL/TLS 版本。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 支持的加密套件。ssl_prefer_server_ciphers on; # 优先使用服务器端的加密套件列表。# To allow special characters in headersignore_invalid_headers off; # 允许特殊字符出现在 HTTP 头中。# Allow any size file to be uploaded.# Set to a value such as 1000m; to restrict file size to a specific valueclient_max_body_size 0; # 允许上传任意大小的文件。# To disable bufferingproxy_buffering off; # 关闭代理缓冲。proxy_request_buffering off; # 不对请求体进行缓冲。location / { # 定义根路径的处理规则。proxy_set_header Host $http_host; # 设置 Host 头。proxy_set_header X-Real-IP $remote_addr; # 设置客户端真实 IP。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置客户端 IP 列表。proxy_set_header X-Forwarded-Proto $scheme; # 设置协议类型。proxy_connect_timeout 300; # 设置连接超时时间。# Default is HTTP/1, keepalive is only enabled in HTTP/1.1proxy_http_version 1.1; # 使用 HTTP/1.1 版本。proxy_set_header Connection ; # 清空 Connection 头避免代理服务器使用 close 或者 keep-alive。# For WebSocket supportproxy_set_header Upgrade $http_upgrade; # 设置升级协议头。proxy_set_header Connection upgrade; # 设置连接类型为升级。chunked_transfer_encoding off; # 禁用分块传输编码。proxy_pass http://adobe; # 指定代理目标。}}# HTTPS 服务器块 for consoleserver {listen 443 ssl; # 侦听443端口用于SSL。listen [::]:443 ssl; # 侦听 IPv6 地址的443端口用于SSL。server_name 192.168.1.243; # 自己的域名。ssl_certificate /etc/nginx/ssl/server1.crt; # SSL 证书文件路径。ssl_certificate_key /etc/nginx/ssl/server1.key; # SSL 私钥文件路径。ssl_session_timeout 5m; # SSL 会话缓存的有效时间。ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 支持的 SSL/TLS 版本。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 支持的加密套件。ssl_prefer_server_ciphers on; # 优先使用服务器端的加密套件列表。# To allow special characters in headersignore_invalid_headers off; # 允许特殊字符出现在 HTTP 头中。# Allow any size file to be uploaded.# Set to a value such as 1000m; to restrict file size to a specific valueclient_max_body_size 0; # 允许上传任意大小的文件。# To disable bufferingproxy_buffering off; # 关闭代理缓冲。proxy_request_buffering off; # 不对请求体进行缓冲。location / { # 定义根路径的处理规则。proxy_set_header Host $http_host; # 设置 Host 头。proxy_set_header X-Real-IP $remote_addr; # 设置客户端真实 IP。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置客户端 IP 列表。proxy_set_header X-Forwarded-Proto $scheme; # 设置协议类型。proxy_set_header X-NginX-Proxy true; # 设置代理标志。# This is necessary to pass the correct IP to be hashedreal_ip_header X-Real-IP; # 设置用于 IP 哈希的头部。proxy_connect_timeout 300; # 设置连接超时时间。# For WebSocket supportproxy_set_header Upgrade $http_upgrade; # 设置升级协议头。proxy_set_header Connection upgrade; # 设置连接类型为升级。chunked_transfer_encoding off; # 禁用分块传输编码。proxy_pass http://console; # 指定代理目标。}}
}
解释和说明 Global Configuration (全局配置): 设置了运行 Nginx 的用户、错误日志的位置、PID 文件的位置等基本配置项。 Events Block (事件块): 设置了每个工作进程的最大并发连接数。 HTTP Configuration (HTTP 配置): 包含了 MIME 类型配置文件。定义了访问日志的格式。启用了高效文件传输。设置了保持连接的超时时间。 Upstream Blocks (上游配置): 定义了两个负载均衡组 adobe 和 console分别包含三个服务器并为 console 组启用了基于 IP 的会话保持。 Server Blocks (服务器配置): HTTP 重定向到 HTTPS: 侦听80端口并将所有HTTP请求重定向到HTTPS。HTTPS 服务器块: 侦听443端口用于SSL并启用了 SSL 证书和密钥以及 SSL 会话缓存、协议版本和加密套件等配置。两个服务器块分别代理到 adobe 和 console 上游组并支持 WebSocket。
通过以上配置Nginx 将能够支持 HTTPS并将 HTTP 请求重定向到 HTTPS同时代理到不同的后端服务。
分别在242243244上创建目录和上传相关配置文件
然后分别启动
docker-compose up -d 参考sudo yum install tree 安装tree命令 sudo yum install lrzsz 安装rz命令
-----------------------------------------------
安装完毕 登录验证
http 登录 用户名 minio 密码 minio123
https登录 未成功 需要重新生产ssl文件 在本地修改 openssl x509 -req -in server1.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server2.crt -days 36500 -extensions req_ext -extfile ssl.conf openssl rsa -in server1.key -out server1_rsa.key 输入密码123456
mv server1_rsa.key server1.key
docker-compose stop 重新启动
docker-compose up -d