dedecms确定网站风格,网站建设 中企动力 常州,制作网站入门,想找一家公司设计网站文章目录一、分布式存储可靠性常用方法1. 概述2. 冗余3. 校验二、分布式Minio优势2.1. 数据保护2.2. 高可用2.3.一致性三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio四、分布式Minio负载均衡4.1. nginx安… 文章目录一、分布式存储可靠性常用方法1. 概述2. 冗余3. 校验二、分布式Minio优势2.1. 数据保护2.2. 高可用2.3.一致性三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio四、分布式Minio负载均衡4.1. nginx安装4.2. 配置nginx4.3. 停止nginx服务4.4. 重新启动nginx4.5. 登录monio分布式Minio可以让你将多块硬盘甚至在不同的机器上组成一个对象存储服务。由于硬盘分布在不同的节点上分布式Minio避免了单点故障。
一、分布式存储可靠性常用方法
1. 概述
分布式存储很关键的点在于数据的可靠性即保证数据的完整不丢失不损坏。只有在可靠性实现的前提下才有了追求一致性、高可用、高性能的基础。而对于在存储领域一般对于保证数据可靠性的方法主要有两类一类是冗余法一类是校验法。
2. 冗余
冗余法最简单直接即对存储的数据进行副本备份当数据出现丢失损坏即可使用备份内容进行恢复而副本 备份的多少决定了数据可靠性的高低。这其中会有成本的考量副本数据越多数据越可靠但需要的设备就越多成本就越高。可靠性是允许丢失其中一份数据。当前已有很多分布式系统是采用此种方式实现如 Hadoop 的文件系统3个副本Redis 的集群MySQL 的主备模式等。
3. 校验
校验法即通过校验码的数学计算的方式对出现丢失、损坏的数据进行校验、还原。注意这里有两个作用一个校验通过对数据进行校验和( checksum )进行计算可以检查数据是否完整有无损坏或更改在数据传输和保存时经常用到如 TCP 协议二是恢复还原通过对数据结合校验码通过数学计算还原丢失或损坏的数据可以在保证数据可靠的前提下降低冗余如单机硬盘存储中的 RAID技术纠删码Erasure Code技术等。MinIO 采用的就是纠删码技术。
二、分布式Minio优势
2.1. 数据保护
分布式Minio采用 纠删码来防范多个节点宕机和位衰减 bit rot 。 分布式Minio至少需要4个硬盘使用分布式Minio自动引入了纠删码功能。
2.2. 高可用
单机Minio服务存在单点故障相反如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线你的数据就是安全的。不过你需要至少有N/21个硬盘来创建新的对象。 例如一个16节点的Minio集群每个节点16块硬盘就算8台服務器宕机这个集群仍然是可读的不过你需要9台服務器才能写数据。
2.3.一致性
Minio在分布式和单机模式下所有读写操作都严格遵守read-after-write一致性模型
三、运行分布式Minio
3.1. 启动方案简述
启动一个分布式Minio实例你只需要把硬盘位置做为参数传给minio server命令即可然后你需要在所有其它节点运行同样的命令。
分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥这样这些节点才能建立联接。 为了实现这个你需要在执行minio server命令之前先将access秘钥和secret秘钥export成环境 变量。新版本使用MINIO_ROOT_USERMINIO_ROOT_PASSWORD。分布式Minio使用的磁盘里必须是干净的里面没有数据。下面示例里的IP仅供示例参考你需要改成你真实用到的IP和文件夹路径。分布式Minio里的节点时间差不能超过3秒你可以使用NTP 来保证时间一致。在Windows下运行分布式Minio处于实验阶段请悠着点使用。
3.2. 案例说明
8个节点每节点1块盘 启动分布式Minio实例8个节点每节点1块盘需要在8个节点上都运行下面的命令
data MINIO_ROOT_USERadmin
data MINIO_ROOT_PASSWORD12345678
MINIO_HOME/root${MINIO_HOME}/minio server --address :9000 --console-address :50000 \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4 \
http://192.168.92.105:9000/mnt/data5 http://192.168.92.106:9000/mnt/data6 \
http://192.168.92.107:9000/mnt/data7 http://192.168.92.108:9000/mnt/data8 4节点每节点4块盘 启动分布式Minio实例4节点每节点4块盘需要在4个节点上都运行下面的命令
data MINIO_ROOT_USERadmin
data MINIO_ROOT_PASSWORD12345678
MINIO_HOME/root${MINIO_HOME}/minio server --address :9000 --console-address :50000 \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.101:9000/mnt/data2 \
http://192.168.92.101:9000/mnt/data3 http://192.168.92.101:9000/mnt/data4 \
http://192.168.92.102:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.102:9000/mnt/data3 http://192.168.92.102:9000/mnt/data4 \
http://192.168.92.103:9000/mnt/data1 http://192.168.92.103:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.103:9000/mnt/data4 \
http://192.168.92.104:9000/mnt/data1 http://192.168.92.104:9000/mnt/data2 \
http://192.168.92.104:9000/mnt/data3 http://192.168.92.104:9000/mnt/data43.3. 制作分布式启动脚本 脚本演示4个节点每个节点挂载4块磁盘。在实际的服务器上依次执行以下命令即可 案例演示伪分布式模式 vim minio_cluster.shdata MINIO_ROOT_USERadmin
data MINIO_ROOT_PASSWORD12345678
MINIO_HOME/rootnohup ${MINIO_HOME}/minio server --address :9000 --console-address :50000 \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.101:9000/mnt/data2 \
http://192.168.92.101:9000/mnt/data3 http://192.168.92.101:9000/mnt/data4 \
http://192.168.92.102:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.102:9000/mnt/data3 http://192.168.92.102:9000/mnt/data4 \
http://192.168.92.103:9000/mnt/data1 http://192.168.92.103:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.103:9000/mnt/data4 \
http://192.168.92.104:9000/mnt/data1 http://192.168.92.104:9000/mnt/data2 \
http://192.168.92.104:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4 ${MINIO_HOME}/minio-9000.log 21 chmod ux minio_cluster.sh
./minio_cluster.sh3.4. 制作伪分布式启动脚本 案例演示伪分布式模式案例 vim minio_cluster.shexport MINIO_ROOT_USERadmin
export MINIO_ROOT_PASSWORD12345678
MINIO_HOME/root
MINIO_HOST192.168.92.104for i in {01..04}; donohup ${MINIO_HOME}/minio server --address :90${i} --console-address :500${i} http://${MINIO_HOST}:9001/mnt/data01 http://${MINIO_HOST}:9002/mnt/data02 http://${MINIO_HOST}:9003/mnt/data03 http://${MINIO_HOST}:9004/mnt/data04 ${MINIO_HOME}/minio-90${i}.log 21
done
chmod ux minio_cluster.sh
./minio_cluster.sh3.5. 登录minio 四、分布式Minio负载均衡
4.1. nginx安装
https://blog.csdn.net/weixin_40816738/article/details/119536779
4.2. 配置nginx
cd /usr/local/nginx/conf/
worker_processes 1;
events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream minio {server 192.168.92.104:9001;server 192.168.92.104:9002;server 192.168.92.104:9003;server 192.168.92.104:9004;} upstream console {ip_hash;server 192.168.92.104:50001;server 192.168.92.104:50002;server 192.168.92.104:50003;server 192.168.92.104:50004;} server {listen 9000;server_name localhost;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection ;chunked_transfer_encoding off;proxy_pass http://minio;}} server {listen 50000;server_name localhost;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-NginX-Proxy true;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection ;chunked_transfer_encoding off;在这里插入代码片proxy_pass http://console;}}
}4.3. 停止nginx服务
ps -ef |grep nginx
kill -9 进程号1 进程号24.4. 重新启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf4.5. 登录monio
真实后端控制台端口50001~5004 现在访问50000自动负载到50001~5004的任意一个端口
http://192.168.92.104:50000/
账号密码admin/12345678