暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MINIO:集群部署(Linux CentOS 7.9 + MINIO + NGINX + KeepAlived)

Nephilim 2024-09-14
343

Tips:一些记录,一些笔记



2024/09/13

FRIDAY

When a person’s speech and manner with good motivation,then happiness like his shadow followed him.

当一个人的言谈和举止怀着良善的动机,快乐便如影随形。



01

MINIO


MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。


MINIO的部署有两种方式:

  • 单机部署

  • 分布式部署

    • 主从(存储容量有限制)

    • 资源池


分布式MINIO可以让你将多块硬盘或者多台服务器,组成一个对象存储服务,你可以使用这些存储设备,而不需要考虑其真实的物理位置。


并且,由于硬盘分布在不同的节点上,分布式MINIO避免了单点故障

MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。


官方网站:

https://min.io/


官方下载地址:

https://min.io/download


官方文档:

https://min.io/docs/minio/linux/index.html


官方【Quick Start】文档:

https://docs.min.io/docs/minio-quickstart-guide.html


MINIO中文文档:

http://docs.minio.org.cn/docs


————————

对象存储中常见的「术语」

S3

Simple Storage Service,也就是简单存储服务,这个概念是Amazon(亚马逊)在2006年推出的。

对象存储就是从那个时候诞生的。

S3提供了一个简单的WEB服务接口,可以用于随时在WEB上的任何位置存储和检索任何数量的数据。

Object

存储到Minio的基本对象,例如

  • 文件

  • 字节流

  • 等等

Bucket

用来存储 Object的逻辑空间;

每个Bucket之间的数据是相互隔离的。

Driver

部署 Minio的时候设置的磁盘;

Minio中的所有对象的数据都会存储在 Driver中。

Set

一组 Driver的集合;

分布式部署回根据集群规模自动划分 一个 或者多个 Set;

每个 Set中的Driver分布在不同位置;

一个Object存储在一个Set上;

纠删码(Erasure Code)

一种恢复丢失和损坏的数据的「数学算法」,它是一种编码技术。

在分布式存储系统中,纠删码主要有三类:

  • 阵列纠删码(Array Code:RAID 5 RAID 6)

  • 里德·所罗门纠删码(RS Reed-Solomon)

  • 低密度奇偶校验纠删码(LDPC LowDensity Parity Check Code)


关于「纠删码」后面会单独开一篇笔记详细描述。


02

MINIO分布式集群架构


环境准备:

节点
目录
192.168.2.41

/mnt/driver-1

192.168.2.42
/mnt/driver-1
192.168.2.43
/mnt/driver-1
192.168.2.44
/mnt/driver-1


注意:

  • 每台机器上的对应目录需要使用独立的盘单独挂载出来

  • 每台机器上都创建相同的路径



MINIO架构图:



03

操作系统:配置


关闭SELINUX:

    [root@minio1 ~]# cat etc/selinux/config


    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of three values:
    # targeted - Targeted processes are protected,
    # minimum - Modification of targeted policy. Only selected processes are protected.
    # mls - Multi Level Security protection.
    SELINUXTYPE=targeted




    [root@minio1 ~]#
    [root@minio1 ~]# getenforce
    Disabled
    [root@minio1 ~]#


    关闭防火墙(firewalld)

      [root@minio1 ~]# systemctl status firewalld
      ● firewalld.service - firewalld - dynamic firewall daemon
      Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
      Active: active (running) since Thu 2024-09-12 23:38:41 EDT; 3h 43min ago
      Docs: man:firewalld(1)
      Main PID: 932 (firewalld)
      Tasks: 2
      CGroup: system.slice/firewalld.service
      └─932 usr/bin/python2 -Es usr/sbin/firewalld --nofork --nopid


      Sep 12 23:38:22 minio1 systemd[1]: Starting firewalld - dynamic firewall daemon...
      Sep 12 23:38:41 minio1 systemd[1]: Started firewalld - dynamic firewall daemon.
      Sep 12 23:38:43 minio1 firewalld[932]: WARNING: AllowZoneDrifting is enabled. This is considered an inse... now.
      Hint: Some lines were ellipsized, use -l to show in full.
      [root@minio1 ~]#
      [root@minio1 ~]# systemctl stop firewalld
      [root@minio1 ~]#
      [root@minio1 ~]# systemctl disable firewalld
      Removed symlink etc/systemd/system/multi-user.target.wants/firewalld.service.
      Removed symlink etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
      [root@minio1 ~]#
      [root@minio1 ~]# systemctl status firewalld
      ● firewalld.service - firewalld - dynamic firewall daemon
      Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
      Active: inactive (dead)
      Docs: man:firewalld(1)


      Sep 12 23:38:22 minio1 systemd[1]: Starting firewalld - dynamic firewall daemon...
      Sep 12 23:38:41 minio1 systemd[1]: Started firewalld - dynamic firewall daemon.
      Sep 12 23:38:43 minio1 firewalld[932]: WARNING: AllowZoneDrifting is enabled. This is considered an inse... now.
      Sep 13 03:22:47 minio1 systemd[1]: Stopping firewalld - dynamic firewall daemon...
      Sep 13 03:22:48 minio1 systemd[1]: Stopped firewalld - dynamic firewall daemon.
      Hint: Some lines were ellipsized, use -l to show in full.
      [root@minio1 ~]#


      查看主机名相关配置

        [root@minio1 ~]# cat etc/hosts
        127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6


        192.168.2.41 minio1
        192.168.2.42 minio2
        192.168.2.43 minio3
        192.168.2.44 minio4


        [root@minio1 ~]#
        [root@minio1 ~]# cat etc/hostname
        minio1
        [root@minio1 ~]#


        系统最大文件数:

        永久设置

          [root@minio1 ~]# cat etc/security/limits.conf | grep -v "^#" | strings
          * soft nofile 65536
          * hard nofile 65536
          [root@minio1 ~]#

          临时设置

            [root@minio1 ~]# ulimit -n 65536
            [root@minio1 ~]#
            [root@minio1 ~]# ulimit -n
            65536
            [root@minio1 ~]#


            挂载目录:

              [root@minio1 ~]# cat etc/fstab 


              #
              # etc/fstab
              # Created by anaconda on Thu Sep 12 21:47:17 2024
              #
              # Accessible filesystems, by reference, are maintained under '/dev/disk'
              # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
              #
              /dev/mapper/centos-root xfs defaults 0 0
              #UUID=777a22d3-7f26-4336-9281-baad52479c66 boot xfs defaults 0 0
              /dev/sda1 boot xfs defaults 0 0
              /dev/mapper/centos-swap swap swap defaults 0 0


              /dev/sdb1 mnt/driver-1 ext4 defaults 0 0
              [root@minio1 ~]#
              [root@minio1 ~]# df -h
              Filesystem Size Used Avail Use% Mounted on
              devtmpfs 2.9G 0 2.9G 0% dev
              tmpfs 3.0G 0 3.0G 0% dev/shm
              tmpfs 3.0G 11M 3.0G 1% run
              tmpfs 3.0G 0 3.0G 0% sys/fs/cgroup
              /dev/mapper/centos-root 44G 3.9G 41G 9%
              /dev/sdb1 16G 45M 15G 1% mnt/driver-1
              /dev/sda1 1014M 172M 843M 17% boot
              tmpfs 597M 16K 597M 1% run/user/989
              tmpfs 597M 0 597M 0% run/user/0
              [root@minio1 ~]#


              04

              MINIO:安装


              创建存放MINIO启动脚本与配置文件的目录:

                [root@minio1 ~]# mkdir opt/minio
                [root@minio1 ~]#


                将下载的MINIO的程序上传到前面创建的目录中:

                  [root@minio1 ~]# cd opt/minio/
                  [root@minio1 minio]# ls -ltr
                  total 128136
                  -rw-r--r-- 1 root root 27312280 Sep 13 21:31 mc
                  -rw-r--r-- 1 root root 103891096 Sep 13 21:31 minio
                  [root@minio1 minio]#
                  [root@minio1 minio]# scp * root@minio2:/opt/minio/
                  mc 100% 26MB 26.0MB/s 00:01
                  minio 100% 99MB 33.0MB/s 00:03
                  [root@minio1 minio]# scp * root@minio3:/opt/minio/
                  mc 100% 26MB 26.1MB/s 00:00
                  minio 100% 99MB 33.0MB/s 00:03
                  [root@minio1 minio]# scp * root@minio4:/opt/minio/
                  mc 100% 26MB 26.0MB/s 00:01
                  minio 100% 99MB 33.0MB/s 00:03
                  [root@minio1 minio]#


                  或者,不像上面这样,直接安装从官方下载的「Server Client」对应的 RPM包:

                    [root@minio1 ~]# ls -ltr
                    total 48012
                    -rw-------. 1 root root 1547 Sep 12 22:14 anaconda-ks.cfg
                    -rw-r--r--. 1 root root 1595 Sep 12 22:44 initial-setup-ks.cfg
                    -rw-r--r-- 1 root root 10429499 Sep 13 21:31 mcli-20240909075310.0.0-1.x86_64.rpm
                    -rw-r--r-- 1 root root 38722807 Sep 13 21:31 minio-20240909165928.0.0-1.x86_64.rpm
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -ivh minio-20240909165928.0.0-1.x86_64.rpm
                    Preparing... ################################# [100%]
                    Updating installing...
                    1:minio-20240909165928.0.0-1 ################################# [100%]
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -ivh mcli-20240909075310.0.0-1.x86_64.rpm
                    Preparing... ################################# [100%]
                    Updating installing...
                    1:mcli-20240909075310.0.0-1 ################################# [100%]
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -qa | grep minio
                    minio-20240909165928.0.0-1.x86_64
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -qa | grep mcli
                    mcli-20240909075310.0.0-1.x86_64
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -ql minio
                    /lib/systemd/system/minio.service
                    /usr/local/bin/minio
                    [root@minio1 ~]#
                    [root@minio1 ~]# rpm -ql mcli
                    /usr/local/bin/mcli
                    [root@minio1 ~]#


                    可以看到 RPM的方式,在「/usr/local/bin」下分别创建了 MINIO的服务端与客户端的程序,并且新增了一个系统服务:

                      [root@minio1 ~]# cat lib/systemd/system/minio.service
                      [Unit]
                      Description=MinIO
                      Documentation=https://docs.min.io
                      Wants=network-online.target
                      After=network-online.target
                      AssertFileIsExecutable=/usr/local/bin/minio


                      [Service]
                      Type=notify


                      WorkingDirectory=/usr/local


                      User=minio-user
                      Group=minio-user
                      ProtectProc=invisible


                      EnvironmentFile=-/etc/default/minio
                      ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES


                      # Let systemd restart this service always
                      Restart=always


                      # Specifies the maximum file descriptor number that can be opened by this process
                      LimitNOFILE=1048576


                      # Turn-off memory accounting by systemd, which is buggy.
                      MemoryAccounting=no


                      # Specifies the maximum number of threads this process can create
                      TasksMax=infinity


                      # Disable timeout logic and wait until process is stopped
                      TimeoutSec=infinity


                      SendSIGKILL=no


                      [Install]
                      WantedBy=multi-user.target


                      # Built for ${project.name}-${project.version} (${project.name})
                      [root@minio1 ~]#


                      05

                      MINIO:集群配置

                      配置用于MINIO集群启动的脚本:

                        [root@minio1 minio]# pwd
                        /opt/minio
                        [root@minio1 minio]#
                        [root@minio1 minio]# ls -ltr
                        total 128140
                        -rw-r--r-- 1 root root 27312280 Sep 13 21:31 mc
                        -rw-r--r-- 1 root root 103891096 Sep 13 21:31 minio
                        -rw-r--r-- 1 root root 564 Sep 13 22:00 run.sh
                        [root@minio1 minio]#
                        [root@minio1 minio]# cat run.sh
                        #!/bin/bash
                        #export MINIO_ACCESS_KEY=minioadmin
                        #export MINIO_SECRET_KEY=minioadmin

                        export MINIO_ROOT_USER=minioadmin
                        export MINIO_ROOT_PASSWORD=minioadmin

                        /usr/local/bin/minio server --config-dir /opt/minio --console-address ":9001" \
                        http://192.168.2.41:9000/mnt/driver-1/data1 http://192.168.2.41:9000/mnt/driver-1/data2 \
                        http://192.168.2.42:9000/mnt/driver-1/data1 http://192.168.2.42:9000/mnt/driver-1/data2 \
                        http://192.168.2.43:9000/mnt/driver-1/data1 http://192.168.2.43:9000/mnt/driver-1/data2 \
                        http://192.168.2.44:9000/mnt/driver-1/data1 http://192.168.2.44:9000/mnt/driver-1/data2
                        [root@minio1 minio]#
                        [root@minio1 minio]# scp run.sh root@minio2:/opt/minio/
                        run.sh 100% 564 24.2KB/s 00:00
                        [root@minio1 minio]# scp run.sh root@minio3:/opt/minio/
                        run.sh 100% 564 54.1KB/s 00:00
                        [root@minio1 minio]# scp run.sh root@minio4:/opt/minio/
                        run.sh 100% 564 24.2KB/s 00:00
                        [root@minio1 minio]#


                        变量说明:

                        MINIO_ACCESS_KEY指定用户名(新版本中已经淘汰的参数)
                        MINIO_SECRET_KEY指定密码(新版本中已经淘汰的参数)
                        MINIO_ROOT_USER

                        指定用户名(新版本的参数

                        长度最少「5」个字符

                        MINIO_ROOT_PASSWORD

                        指定密码(新版本的参数

                        密码不能过于简单,否则Minio启动会失败

                        长度最少「8」个字符

                        --config-dir指定集群配置文件目录
                        --address数据服务的监听端口,默认「9000」
                        --console-address控制台服务的监听端口(可视化WEB界面),默认「9001」


                        修改MINIO的服务文件:

                          [root@minio1 minio]# cat usr/lib/systemd/system/minio.service 
                          [Unit]
                          Description=Minio service
                          Documentation=https://docs.minio.io/


                          [Service]
                          WorkingDirectory=/opt/minio/
                          ExecStart=/opt/minio/run.sh


                          Restart=on-failure
                          RestartSec=5


                          [Install]
                          WantedBy=multi-user.target
                          [root@minio1 minio]#


                          [root@minio1 minio]# scp usr/lib/systemd/system/minio.service root@minio2:/usr/lib/systemd/system/
                          minio.service 100% 988 173.7KB/s 00:00
                          [root@minio1 minio]# scp usr/lib/systemd/system/minio.service root@minio3:/usr/lib/systemd/system/
                          minio.service 100% 988 1.2MB/s 00:00
                          [root@minio1 minio]# scp usr/lib/systemd/system/minio.service root@minio4:/usr/lib/systemd/system/
                          minio.service 100% 988 1.1MB/s 00:00
                          [root@minio1 minio]#


                          修改权限:

                            [root@minio1 ~]# ls -ltr usr/lib/systemd/system/minio.service
                            -rw-r--r-- 1 root root 988 Sep 13 22:09 usr/lib/systemd/system/minio.service
                            [root@minio1 ~]#
                            [root@minio1 ~]# chmod +x usr/lib/systemd/system/minio.service
                            [root@minio1 ~]#
                            [root@minio1 ~]#
                            [root@minio1 ~]# ls -ltr usr/local/bin/ | grep minio
                            -rwxr-xr-x 1 root root 103891096 Sep 9 20:27 minio
                            [root@minio1 ~]#
                            [root@minio1 ~]# ls -ltr opt/minio/
                            total 128140
                            -rw-r--r-- 1 root root 27312280 Sep 13 21:31 mc
                            -rw-r--r-- 1 root root 103891096 Sep 13 21:31 minio
                            -rw-r--r-- 1 root root 564 Sep 13 22:00 run.sh
                            [root@minio1 ~]#
                            [root@minio1 ~]# chmod +x opt/minio/*
                            [root@minio1 ~]#
                            [root@minio1 ~]# ls -ltr usr/lib/systemd/system/minio.service
                            -rwxr-xr-x 1 root root 988 Sep 13 22:09 usr/lib/systemd/system/minio.service
                            [root@minio1 ~]#
                            [root@minio1 ~]# ls -ltr opt/minio/
                            total 128140
                            -rwxr-xr-x 1 root root 27312280 Sep 13 21:31 mc
                            -rwxr-xr-x 1 root root 103891096 Sep 13 21:31 minio
                            -rwxr-xr-x 1 root root 564 Sep 13 22:00 run.sh
                            [root@minio1 ~]#


                            启动服务:

                              [root@minio1 ~]# systemctl enable minio
                              [root@minio1 ~]#
                              [root@minio1 ~]# systemctl start minio
                              [root@minio1 ~]#
                              [root@minio1 ~]# systemctl status minio
                              ● minio.service - Minio service
                              Loaded: loaded (/usr/lib/systemd/system/minio.service; enabled; vendor preset: disabled)
                              Active: active (running) since Sat 2024-09-14 11:31:36 CST; 4s ago
                              Docs: https://docs.minio.io/
                              Main PID: 30704 (run.sh)
                              Tasks: 12
                              CGroup: system.slice/minio.service
                              ├─30704 bin/bash opt/minio/run.sh
                              └─30706 usr/local/bin/minio server --config-dir opt/minio --console-address :9001 http://192.168...


                              Sep 14 11:31:36 minio1 run.sh[30704]: MinIO Object Storage Server
                              Sep 14 11:31:36 minio1 run.sh[30704]: Copyright: 2015-2024 MinIO, Inc.
                              Sep 14 11:31:36 minio1 run.sh[30704]: License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
                              Sep 14 11:31:36 minio1 run.sh[30704]: Version: RELEASE.2024-09-09T16-59-28Z (go1.22.7 linux/amd64)
                              Sep 14 11:31:36 minio1 run.sh[30704]: API: http://192.168.2.41:9000 http://192.168.122.1:9000 http://1...:9000
                              Sep 14 11:31:36 minio1 run.sh[30704]: WebUI: http://192.168.2.41:9001 http://192.168.122.1:9001 http://1...:9001
                              Sep 14 11:31:36 minio1 run.sh[30704]: Docs: https://docs.min.io
                              Sep 14 11:31:36 minio1 run.sh[30704]: ---------------------------
                              Sep 14 11:31:36 minio1 run.sh[30704]: WARN: Detected Linux kernel version older than 4.0 release, there ...mance
                              Sep 14 11:31:36 minio1 run.sh[30704]: WARN: Detected default credentials 'minioadmin:minioadmin', we rec...ables
                              Hint: Some lines were ellipsized, use -l to show in full.
                              [root@minio1 ~]#


                              这样,就可以通过集群的任何一个节点的「9000」端口访问MINIO了:

                              • 192.168.2.41:9000

                              • 192.168.2.42:9000

                              • 192.168.2.43:9000

                              • 192.168.2.44:9000



                              登录后就可以访问:


                              06

                              Nginx:必要性

                              上面虽然配置成功了,但是访问同一套MINIO,我们有四个节点的登录端口显然是很不方便的。

                              因此,我们需要用Nginx做一层代理,将访问路径统一一下。



                              07

                              安装编译工具以及依赖库


                              安装编译工具与依赖包:

                                [root@minio1 ~]# dnf install -y make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
                                Last metadata expiration check: 1:44:19 ago on Sat 14 Sep 2024 10:46:14 AM CST.
                                Package make-1:3.82-24.el7.x86_64 is already installed.
                                Package zlib-1.2.7-18.el7.x86_64 is already installed.
                                Package openssl-1:1.0.2k-19.el7.x86_64 is already installed.
                                Dependencies resolved.
                                ================================================================================================================
                                Package Arch Version Repository Size
                                ================================================================================================================
                                Installing:
                                gcc-c++ x86_64 4.8.5-44.el7 base 7.2 M
                                libtool x86_64 2.4.2-22.el7_3 base 588 k
                                openssl-devel x86_64 1:1.0.2k-19.el7 base 1.5 M
                                zlib-devel x86_64 1.2.7-20.el7_9 updates 50 k
                                Installing dependencies:
                                autoconf noarch 2.69-11.el7 base 701 k
                                automake noarch 1.13.4-3.el7 base 679 k
                                cpp x86_64 4.8.5-44.el7 base 5.9 M
                                gcc x86_64 4.8.5-44.el7 base 16 M
                                glibc i686 2.17-317.el7 base 4.3 M
                                glibc-devel x86_64 2.17-317.el7 base 1.1 M
                                glibc-headers x86_64 2.17-317.el7 base 690 k
                                keyutils-libs-devel x86_64 1.5.8-3.el7 base 37 k
                                krb5-devel x86_64 1.15.1-50.el7 base 273 k
                                libcom_err-devel x86_64 1.42.9-19.el7 base 32 k
                                libkadm5 x86_64 1.15.1-50.el7 base 179 k
                                libselinux-devel x86_64 2.5-15.el7 base 187 k
                                libsepol-devel x86_64 2.5-10.el7 base 77 k
                                libstdc++-devel x86_64 4.8.5-44.el7 base 1.5 M
                                libverto-devel x86_64 0.2.5-4.el7 base 12 k
                                m4 x86_64 1.4.16-10.el7 base 256 k
                                nss-softokn-freebl i686 3.44.0-8.el7_7 base 214 k
                                pcre-devel x86_64 8.32-17.el7 base 480 k
                                perl-Test-Harness noarch 3.28-3.el7 base 302 k
                                perl-Thread-Queue noarch 3.02-2.el7 base 17 k
                                kernel-headers x86_64 3.10.0-1160.119.1.el7 updates 9.1 M
                                zlib i686 1.2.7-20.el7_9 updates 91 k


                                Transaction Summary
                                ================================================================================================================
                                Install 26 Packages


                                Total download size: 51 M
                                Installed size: 112 M
                                Downloading Packages:
                                (1/26): automake-1.13.4-3.el7.noarch.rpm 1.0 MB/s | 679 kB 00:00
                                (2/26): autoconf-2.69-11.el7.noarch.rpm 952 kB/s | 701 kB 00:00
                                (3/26): cpp-4.8.5-44.el7.x86_64.rpm 1.4 MB/s | 5.9 MB 00:04
                                (4/26): gcc-c++-4.8.5-44.el7.x86_64.rpm 1.4 MB/s | 7.2 MB 00:04
                                (5/26): glibc-devel-2.17-317.el7.x86_64.rpm 4.8 MB/s | 1.1 MB 00:00
                                (6/26): glibc-headers-2.17-317.el7.x86_64.rpm 4.0 MB/s | 690 kB 00:00
                                (7/26): glibc-2.17-317.el7.i686.rpm 2.4 MB/s | 4.3 MB 00:01
                                (8/26): keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm 1.7 MB/s | 37 kB 00:00
                                (9/26): libcom_err-devel-1.42.9-19.el7.x86_64.rpm 1.8 MB/s | 32 kB 00:00
                                (10/26): krb5-devel-1.15.1-50.el7.x86_64.rpm 6.5 MB/s | 273 kB 00:00
                                (11/26): libkadm5-1.15.1-50.el7.x86_64.rpm 5.5 MB/s | 179 kB 00:00
                                (12/26): libselinux-devel-2.5-15.el7.x86_64.rpm 9.4 MB/s | 187 kB 00:00
                                (13/26): libsepol-devel-2.5-10.el7.x86_64.rpm 3.6 MB/s | 77 kB 00:00
                                (14/26): libtool-2.4.2-22.el7_3.x86_64.rpm 4.8 MB/s | 588 kB 00:00
                                (15/26): libverto-devel-0.2.5-4.el7.x86_64.rpm 330 kB/s | 12 kB 00:00
                                (16/26): libstdc++-devel-4.8.5-44.el7.x86_64.rpm 2.4 MB/s | 1.5 MB 00:00
                                (17/26): m4-1.4.16-10.el7.x86_64.rpm 427 kB/s | 256 kB 00:00
                                (18/26): nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm 365 kB/s | 214 kB 00:00
                                (19/26): pcre-devel-8.32-17.el7.x86_64.rpm 831 kB/s | 480 kB 00:00
                                (20/26): openssl-devel-1.0.2k-19.el7.x86_64.rpm 1.4 MB/s | 1.5 MB 00:01
                                (21/26): perl-Test-Harness-3.28-3.el7.noarch.rpm 3.1 MB/s | 302 kB 00:00
                                (22/26): perl-Thread-Queue-3.02-2.el7.noarch.rpm 24 kB/s | 17 kB 00:00
                                (23/26): zlib-1.2.7-20.el7_9.i686.rpm 464 kB/s | 91 kB 00:00
                                (24/26): zlib-devel-1.2.7-20.el7_9.x86_64.rpm 367 kB/s | 50 kB 00:00
                                (25/26): gcc-4.8.5-44.el7.x86_64.rpm 1.8 MB/s | 16 MB 00:09
                                (26/26): kernel-headers-3.10.0-1160.119.1.el7.x86_64.rpm 3.2 MB/s | 9.1 MB 00:02
                                ----------------------------------------------------------------------------------------------------------------
                                Total 4.6 MB/s | 51 MB 00:11
                                Running transaction check
                                Transaction check succeeded.
                                Running transaction test
                                Transaction test succeeded.
                                Running transaction
                                Preparing : 1/1
                                Installing : kernel-headers-3.10.0-1160.119.1.el7.x86_64 1/26
                                Installing : perl-Thread-Queue-3.02-2.el7.noarch 2/26
                                Installing : perl-Test-Harness-3.28-3.el7.noarch 3/26
                                Installing : pcre-devel-8.32-17.el7.x86_64 4/26
                                Installing : libverto-devel-0.2.5-4.el7.x86_64 5/26
                                Installing : libstdc++-devel-4.8.5-44.el7.x86_64 6/26
                                Installing : libsepol-devel-2.5-10.el7.x86_64 7/26
                                Installing : libselinux-devel-2.5-15.el7.x86_64 8/26
                                Installing : libcom_err-devel-1.42.9-19.el7.x86_64 9/26
                                Installing : keyutils-libs-devel-1.5.8-3.el7.x86_64 10/26
                                Installing : nss-softokn-freebl-3.44.0-8.el7_7.i686 11/26
                                Running scriptlet: glibc-2.17-317.el7.i686 12/26
                                Installing : glibc-2.17-317.el7.i686 12/26
                                Running scriptlet: glibc-2.17-317.el7.i686 12/26
                                Installing : cpp-4.8.5-44.el7.x86_64 13/26
                                Running scriptlet: cpp-4.8.5-44.el7.x86_64 13/26
                                Running scriptlet: glibc-headers-2.17-317.el7.x86_64 14/26
                                Installing : glibc-headers-2.17-317.el7.x86_64 14/26
                                Installing : glibc-devel-2.17-317.el7.x86_64 15/26
                                Running scriptlet: glibc-devel-2.17-317.el7.x86_64 15/26
                                Installing : gcc-4.8.5-44.el7.x86_64 16/26
                                Running scriptlet: gcc-4.8.5-44.el7.x86_64 16/26
                                Installing : libkadm5-1.15.1-50.el7.x86_64 17/26
                                Running scriptlet: libkadm5-1.15.1-50.el7.x86_64 17/26
                                Installing : krb5-devel-1.15.1-50.el7.x86_64 18/26
                                Installing : m4-1.4.16-10.el7.x86_64 19/26
                                Running scriptlet: m4-1.4.16-10.el7.x86_64 19/26
                                Installing : autoconf-2.69-11.el7.noarch 20/26
                                Running scriptlet: autoconf-2.69-11.el7.noarch 20/26
                                Installing : automake-1.13.4-3.el7.noarch 21/26
                                Running scriptlet: automake-1.13.4-3.el7.noarch 21/26
                                Installing : zlib-1.2.7-20.el7_9.i686 22/26
                                Running scriptlet: zlib-1.2.7-20.el7_9.i686 22/26
                                Installing : zlib-devel-1.2.7-20.el7_9.x86_64 23/26
                                Installing : openssl-devel-1:1.0.2k-19.el7.x86_64 24/26
                                Installing : libtool-2.4.2-22.el7_3.x86_64 25/26
                                Running scriptlet: libtool-2.4.2-22.el7_3.x86_64 25/26
                                Installing : gcc-c++-4.8.5-44.el7.x86_64 26/26
                                Verifying : autoconf-2.69-11.el7.noarch 1/26
                                Verifying : automake-1.13.4-3.el7.noarch 2/26
                                Verifying : cpp-4.8.5-44.el7.x86_64 3/26
                                Verifying : gcc-4.8.5-44.el7.x86_64 4/26
                                Verifying : gcc-c++-4.8.5-44.el7.x86_64 5/26
                                Verifying : glibc-2.17-317.el7.i686 6/26
                                Verifying : glibc-devel-2.17-317.el7.x86_64 7/26
                                Verifying : glibc-headers-2.17-317.el7.x86_64 8/26
                                Verifying : keyutils-libs-devel-1.5.8-3.el7.x86_64 9/26
                                Verifying : krb5-devel-1.15.1-50.el7.x86_64 10/26
                                Verifying : libcom_err-devel-1.42.9-19.el7.x86_64 11/26
                                Verifying : libkadm5-1.15.1-50.el7.x86_64 12/26
                                Verifying : libselinux-devel-2.5-15.el7.x86_64 13/26
                                Verifying : libsepol-devel-2.5-10.el7.x86_64 14/26
                                Verifying : libstdc++-devel-4.8.5-44.el7.x86_64 15/26
                                Verifying : libtool-2.4.2-22.el7_3.x86_64 16/26
                                Verifying : libverto-devel-0.2.5-4.el7.x86_64 17/26
                                Verifying : m4-1.4.16-10.el7.x86_64 18/26
                                Verifying : nss-softokn-freebl-3.44.0-8.el7_7.i686 19/26
                                Verifying : openssl-devel-1:1.0.2k-19.el7.x86_64 20/26
                                Verifying : pcre-devel-8.32-17.el7.x86_64 21/26
                                Verifying : perl-Test-Harness-3.28-3.el7.noarch 22/26
                                Verifying : perl-Thread-Queue-3.02-2.el7.noarch 23/26
                                Verifying : kernel-headers-3.10.0-1160.119.1.el7.x86_64 24/26
                                Verifying : zlib-1.2.7-20.el7_9.i686 25/26
                                Verifying : zlib-devel-1.2.7-20.el7_9.x86_64 26/26


                                Installed:
                                gcc-c++-4.8.5-44.el7.x86_64 libtool-2.4.2-22.el7_3.x86_64
                                openssl-devel-1:1.0.2k-19.el7.x86_64 zlib-devel-1.2.7-20.el7_9.x86_64
                                autoconf-2.69-11.el7.noarch automake-1.13.4-3.el7.noarch
                                cpp-4.8.5-44.el7.x86_64 gcc-4.8.5-44.el7.x86_64
                                glibc-2.17-317.el7.i686 glibc-devel-2.17-317.el7.x86_64
                                glibc-headers-2.17-317.el7.x86_64 keyutils-libs-devel-1.5.8-3.el7.x86_64
                                krb5-devel-1.15.1-50.el7.x86_64 libcom_err-devel-1.42.9-19.el7.x86_64
                                libkadm5-1.15.1-50.el7.x86_64 libselinux-devel-2.5-15.el7.x86_64
                                libsepol-devel-2.5-10.el7.x86_64 libstdc++-devel-4.8.5-44.el7.x86_64
                                libverto-devel-0.2.5-4.el7.x86_64 m4-1.4.16-10.el7.x86_64
                                nss-softokn-freebl-3.44.0-8.el7_7.i686 pcre-devel-8.32-17.el7.x86_64
                                perl-Test-Harness-3.28-3.el7.noarch perl-Thread-Queue-3.02-2.el7.noarch
                                kernel-headers-3.10.0-1160.119.1.el7.x86_64 zlib-1.2.7-20.el7_9.i686


                                Complete!
                                [root@minio1 ~]#


                                08

                                PCRE


                                安装PCRE可以让Nginx支持「Rewrite」


                                获取源码包:

                                  [root@minio1 pcre]# pwd
                                  /upload/pcre
                                  [root@minio1 pcre]#
                                  [root@minio1 pcre]# ls -ltr
                                  total 0
                                  [root@minio1 pcre]#
                                  [root@minio1 pcre]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
                                  --2024-09-14 12:43:16-- http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
                                  Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 204.68.111.105
                                  Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|204.68.111.105|:80... connected.
                                  HTTP request sent, awaiting response... 302 Found
                                  Location: http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz?viasf=1 [following]
                                  --2024-09-14 12:43:18-- http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz?viasf=1
                                  Resolving jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)... 150.65.7.130, 2001:df0:2ed:feed::feed
                                  Connecting to jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)|150.65.7.130|:80... connected.
                                  HTTP request sent, awaiting response... 200 OK
                                  Length: 1996552 (1.9M) [application/x-gzip]
                                  Saving to: ‘pcre-8.35.tar.gz’


                                  100%[======================================================================>] 1,996,552 51.6KB/s in 50s


                                  2024-09-14 12:44:09 (38.7 KB/s) - ‘pcre-8.35.tar.gz’ saved [1996552/1996552]


                                  [root@minio1 pcre]#
                                  [root@minio1 pcre]# ls -ltr
                                  total 1952
                                  -rw-r--r-- 1 root root 1996552 Apr 9 2014 pcre-8.35.tar.gz
                                  [root@minio1 pcre]#
                                  [root@minio1 pcre]# du -sh *
                                  2.0M pcre-8.35.tar.gz
                                  [root@minio1 pcre]#


                                  解压,并编译安装:

                                    [root@minio1 pcre]# tar -xzf pcre-8.35.tar.gz 
                                    [root@minio1 pcre]# ls -ltr
                                    total 1964
                                    drwxr-xr-x 7 1169 1169 8192 Apr 4 2014 pcre-8.35
                                    -rw-r--r-- 1 root root 1996552 Apr 9 2014 pcre-8.35.tar.gz
                                    [root@minio1 pcre]#
                                    [root@minio1 pcre]# cd pcre-8.35/
                                    [root@minio1 pcre-8.35]#
                                    [root@minio1 pcre-8.35]# ./configure && make && make install
                                    (... 过多的输出)



                                    安装完成后,查看PCRE的版本,验证安装:

                                      [root@minio1 pcre-8.35]# whereis pcre-config
                                      pcre-config: /usr/bin/pcre-config usr/local/bin/pcre-config usr/share/man/man1/pcre-config.1.gz
                                      [root@minio1 pcre-8.35]#
                                      [root@minio1 pcre-8.35]# which pcre-config
                                      /usr/local/bin/pcre-config
                                      [root@minio1 pcre-8.35]#
                                      [root@minio1 pcre-8.35]# pcre-config --version
                                      8.35
                                      [root@minio1 pcre-8.35]#


                                      09

                                      NGINX:源码包编译安装


                                      获取源码包:

                                        [root@minio1 nginx]# pwd
                                        /upload/nginx
                                        [root@minio1 nginx]#
                                        [root@minio1 nginx]# ls -ltr
                                        total 0
                                        [root@minio1 nginx]#
                                        [root@minio1 nginx]# wget http://nginx.org/download/nginx-1.20.2.tar.gz
                                        --2024-09-14 12:50:00-- http://nginx.org/download/nginx-1.20.2.tar.gz
                                        Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2600::6, ...
                                        Connecting to nginx.org (nginx.org)|3.125.197.172|:80... connected.
                                        HTTP request sent, awaiting response... 200 OK
                                        Length: 1062124 (1.0M) [application/octet-stream]
                                        Saving to: ‘nginx-1.20.2.tar.gz’


                                        100%[======================================================================>] 1,062,124 62.8KB/s in 24s


                                        2024-09-14 12:50:26 (42.9 KB/s) - ‘nginx-1.20.2.tar.gz’ saved [1062124/1062124]


                                        [root@minio1 nginx]#
                                        [root@minio1 nginx]# ls -ltr
                                        total 1040
                                        -rw-r--r-- 1 root root 1062124 Nov 16 2021 nginx-1.20.2.tar.gz
                                        [root@minio1 nginx]#
                                        [root@minio1 nginx]# du -sh *
                                        1.1M nginx-1.20.2.tar.gz
                                        [root@minio1 nginx]#


                                        解压,并编译安装:

                                          [root@minio1 nginx]# pwd
                                          /upload/nginx
                                          [root@minio1 nginx]#
                                          [root@minio1 nginx]# ls -ltr
                                          total 1040
                                          -rw-r--r-- 1 root root 1062124 Nov 16 2021 nginx-1.20.2.tar.gz
                                          [root@minio1 nginx]#
                                          [root@minio1 nginx]# tar -xzf nginx-1.20.2.tar.gz
                                          [root@minio1 nginx]#
                                          [root@minio1 nginx]# cd nginx-1.20.2/
                                          [root@minio1 nginx-1.20.2]#
                                          [root@minio1 nginx-1.20.2]# mkdir usr/local/webserver/nginx -p
                                          [root@minio1 nginx-1.20.2]#
                                          [root@minio1 nginx-1.20.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/upload/pcre/pcre-8.35
                                          (... 过多的输出)


                                          checking for POSIX semaphores ... not found
                                          checking for POSIX semaphores in libpthread ... found
                                          checking for struct msghdr.msg_control ... found
                                          checking for ioctl(FIONBIO) ... found
                                          checking for ioctl(FIONREAD) ... found
                                          checking for struct tm.tm_gmtoff ... found
                                          checking for struct dirent.d_namlen ... not found
                                          checking for struct dirent.d_type ... found
                                          checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
                                          checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
                                          checking for openat(), fstatat() ... found
                                          checking for getaddrinfo() ... found
                                          checking for OpenSSL library ... found
                                          checking for zlib library ... found
                                          creating objs/Makefile


                                          Configuration summary
                                          + using PCRE library: /upload/pcre/pcre-8.35
                                          + using system OpenSSL library
                                          + using system zlib library


                                          nginx path prefix: "/usr/local/webserver/nginx"
                                          nginx binary file: "/usr/local/webserver/nginx/sbin/nginx"
                                          nginx modules path: "/usr/local/webserver/nginx/modules"
                                          nginx configuration prefix: "/usr/local/webserver/nginx/conf"
                                          nginx configuration file: "/usr/local/webserver/nginx/conf/nginx.conf"
                                          nginx pid file: "/usr/local/webserver/nginx/logs/nginx.pid"
                                          nginx error log file: "/usr/local/webserver/nginx/logs/error.log"
                                          nginx http access log file: "/usr/local/webserver/nginx/logs/access.log"
                                          nginx http client request body temporary files: "client_body_temp"
                                          nginx http proxy temporary files: "proxy_temp"
                                          nginx http fastcgi temporary files: "fastcgi_temp"
                                          nginx http uwsgi temporary files: "uwsgi_temp"
                                          nginx http scgi temporary files: "scgi_temp"


                                          [root@minio1 nginx-1.20.2]#
                                          [root@minio1 nginx-1.20.2]# make && make install
                                          (... 过多的输出)


                                          cp conf/koi-utf '/usr/local/webserver/nginx/conf'
                                          cp conf/win-utf '/usr/local/webserver/nginx/conf'
                                          test -f '/usr/local/webserver/nginx/conf/mime.types' \
                                          || cp conf/mime.types '/usr/local/webserver/nginx/conf'
                                          cp conf/mime.types '/usr/local/webserver/nginx/conf/mime.types.default'
                                          test -f '/usr/local/webserver/nginx/conf/fastcgi_params' \
                                          || cp conf/fastcgi_params '/usr/local/webserver/nginx/conf'
                                          cp conf/fastcgi_params \
                                          '/usr/local/webserver/nginx/conf/fastcgi_params.default'
                                          test -f '/usr/local/webserver/nginx/conf/fastcgi.conf' \
                                          || cp conf/fastcgi.conf '/usr/local/webserver/nginx/conf'
                                          cp conf/fastcgi.conf '/usr/local/webserver/nginx/conf/fastcgi.conf.default'
                                          test -f '/usr/local/webserver/nginx/conf/uwsgi_params' \
                                          || cp conf/uwsgi_params '/usr/local/webserver/nginx/conf'
                                          cp conf/uwsgi_params \
                                          '/usr/local/webserver/nginx/conf/uwsgi_params.default'
                                          test -f '/usr/local/webserver/nginx/conf/scgi_params' \
                                          || cp conf/scgi_params '/usr/local/webserver/nginx/conf'
                                          cp conf/scgi_params \
                                          '/usr/local/webserver/nginx/conf/scgi_params.default'
                                          test -f '/usr/local/webserver/nginx/conf/nginx.conf' \
                                          || cp conf/nginx.conf '/usr/local/webserver/nginx/conf/nginx.conf'
                                          cp conf/nginx.conf '/usr/local/webserver/nginx/conf/nginx.conf.default'
                                          test -d '/usr/local/webserver/nginx/logs' \
                                          || mkdir -p '/usr/local/webserver/nginx/logs'
                                          test -d '/usr/local/webserver/nginx/logs' \
                                          || mkdir -p '/usr/local/webserver/nginx/logs'
                                          test -d '/usr/local/webserver/nginx/html' \
                                          || cp -R html '/usr/local/webserver/nginx'
                                          test -d '/usr/local/webserver/nginx/logs' \
                                          || mkdir -p '/usr/local/webserver/nginx/logs'
                                          make[1]: Leaving directory `/upload/nginx/nginx-1.20.2'
                                          [root@minio1 nginx-1.20.2]#


                                          这样,Nginx就安装完成了。


                                          Nginx的目录结构:

                                            [root@minio1 nginx-1.20.2]# tree usr/local/webserver/nginx/
                                            /usr/local/webserver/nginx/
                                            ├── conf
                                            │   ├── fastcgi.conf
                                            │   ├── fastcgi.conf.default
                                            │   ├── fastcgi_params
                                            │   ├── fastcgi_params.default
                                            │   ├── koi-utf
                                            │   ├── koi-win
                                            │   ├── mime.types
                                            │   ├── mime.types.default
                                            │   ├── nginx.conf
                                            │   ├── nginx.conf.default
                                            │   ├── scgi_params
                                            │   ├── scgi_params.default
                                            │   ├── uwsgi_params
                                            │   ├── uwsgi_params.default
                                            │   └── win-utf
                                            ├── html
                                            │   ├── 50x.html
                                            │   └── index.html
                                            ├── logs
                                            └── sbin
                                            └── nginx


                                            4 directories, 18 files
                                            [root@minio1 nginx-1.20.2]#

                                            配置文件:/usr/local/webserver/nginx/conf/nginx.conf

                                            启动目录:/usr/local/webserver/sbin/nginx


                                            配置NGINX的Linux系统服务:

                                              [root@minio1 system]# pwd
                                              /usr/lib/systemd/system
                                              [root@minio1 system]#
                                              [root@minio1 system]# cat nginx.service
                                              [Unit]
                                              Description=Nginx HTTP Server
                                              After=network.target


                                              [Service]
                                              Type=forking
                                              ExecStart=/usr/local/webserver/nginx/sbin/nginx -c usr/local/webserver/nginx/conf/nginx.conf
                                              ExecReload=/usr/local/webserver/nginx/sbin/nginx -c usr/local/webserver/nginx/conf/nginx.conf -s reload
                                              ExecStop=/usr/local/webserver/nginx/sbin/nginx -s stop
                                              PrivateTmp=true


                                              [Install]
                                              WantedBy=multi-user.target
                                              [root@minio1 system]#


                                              10

                                              在NGINX中配置MINIO


                                              修改NGINX的配置文件:

                                                [root@minio1 system]# cat usr/local/webserver/nginx/conf/nginx.conf


                                                #user nobody;
                                                worker_processes 1;


                                                #error_log logs/error.log;
                                                #error_log logs/error.log notice;
                                                #error_log logs/error.log info;


                                                #pid logs/nginx.pid;




                                                events {
                                                worker_connections 1024;
                                                }




                                                http {
                                                include 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 logs/access.log main;


                                                sendfile on;
                                                #tcp_nopush on;


                                                #keepalive_timeout 0;
                                                keepalive_timeout 65;


                                                #gzip on;


                                                upstream minio_s3 {
                                                least_conn;
                                                server 192.168.2.41:9000;
                                                server 192.168.2.42:9000;
                                                server 192.168.2.43:9000;
                                                server 192.168.2.44:9000;
                                                }
                                                upstream minio_console {
                                                least_conn;
                                                        server 192.168.2.41:9001;
                                                        server 192.168.2.42:9001;
                                                        server 192.168.2.43:9001;
                                                        server 192.168.2.44:9001;
                                                }


                                                server {
                                                listen 80;
                                                listen [::]:80;


                                                server_name 192.168.2.45;


                                                #charset koi8-r;


                                                #access_log logs/host.access.log main;


                                                # Allow special characters in headers
                                                ignore_invalid_headers off;
                                                # Allow any size file to be uploaded.
                                                # Set to a value such as 1000m; to restrict file size to a specific value
                                                client_max_body_size 0;
                                                # Disable buffering
                                                proxy_buffering off;
                                                proxy_request_buffering off;


                                                location / {
                                                # root html;
                                                # index index.html index.htm;


                                                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;
                                                # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
                                                proxy_http_version 1.1;
                                                proxy_set_header Connection "";
                                                chunked_transfer_encoding off;


                                                proxy_pass http://minio_s3; # This uses the upstream directive definition to load balance
                                                }


                                                location /minio/ui/ {
                                                rewrite ^/minio/ui/(.*) $1 break;
                                                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;


                                                # This is necessary to pass the correct IP to be hashed
                                                # real_ip_header X-Real-IP;


                                                proxy_connect_timeout 300;


                                                # To support websockets in MinIO versions released after January 2023
                                                proxy_http_version 1.1;
                                                proxy_set_header Upgrade $http_upgrade;
                                                proxy_set_header Connection "upgrade";
                                                # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
                                                # Uncomment the following line to set the Origin request to an empty string
                                                proxy_set_header Origin '';


                                                chunked_transfer_encoding off;


                                                # This uses the upstream directive definition to load balance
                                                proxy_pass http://minio_console;
                                                }


                                                #error_page 404 404.html;


                                                # redirect server error pages to the static page 50x.html
                                                #
                                                error_page 500 502 503 504 50x.html;
                                                location = /50x.html {
                                                root html;
                                                }


                                                # proxy the PHP scripts to Apache listening on 127.0.0.1:80
                                                #
                                                #location ~ \.php$ {
                                                # proxy_pass http://127.0.0.1;
                                                #}


                                                # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
                                                #
                                                #location ~ \.php$ {
                                                # root html;
                                                # fastcgi_pass 127.0.0.1:9000;
                                                # fastcgi_index index.php;
                                                # fastcgi_param SCRIPT_FILENAME scripts$fastcgi_script_name;
                                                # include fastcgi_params;
                                                #}


                                                # deny access to .htaccess files, if Apache's document root
                                                # concurs with nginx's one
                                                #
                                                #location ~ \.ht {
                                                # deny all;
                                                #}
                                                }




                                                # another virtual host using mix of IP-, name-, and port-based configuration
                                                #
                                                #server {
                                                # listen 8000;
                                                # listen somename:8080;
                                                # server_name somename alias another.alias;


                                                # location / {
                                                # root html;
                                                # index index.html index.htm;
                                                # }
                                                #}




                                                # HTTPS server
                                                #
                                                #server {
                                                # listen 443 ssl;
                                                # server_name localhost;


                                                # ssl_certificate cert.pem;
                                                # ssl_certificate_key cert.key;


                                                # ssl_session_cache shared:SSL:1m;
                                                # ssl_session_timeout 5m;


                                                # ssl_ciphers HIGH:!aNULL:!MD5;
                                                # ssl_prefer_server_ciphers on;


                                                # location / {
                                                # root html;
                                                # index index.html index.htm;
                                                # }
                                                #}


                                                }
                                                [root@minio1 system]#


                                                上面,这里的地址配置:

                                                  server_name  192.168.2.45;

                                                  写的是一个虚拟地址,后面用「KeepAlive」配出来。


                                                  11

                                                  NGINX:启动


                                                  启动系统服务:

                                                    [root@minio1 system]# systemctl enable nginx
                                                    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
                                                    [root@minio1 system]#
                                                    [root@minio1 system]# systemctl start nginx
                                                    [root@minio1 system]#
                                                    [root@minio1 system]# systemctl status nginx
                                                    ● nginx.service - Nginx HTTP Server
                                                    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
                                                    Active: active (running) since Sat 2024-09-14 13:34:30 CST; 4s ago
                                                    Process: 12648 ExecStart=/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
                                                    Main PID: 12651 (nginx)
                                                    Tasks: 2
                                                    CGroup: /system.slice/nginx.service
                                                    ├─12651 nginx: master process /usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/...
                                                    └─12652 nginx: worker process


                                                    Sep 14 13:34:30 minio1 systemd[1]: Starting Nginx HTTP Server...
                                                    Sep 14 13:34:30 minio1 systemd[1]: Started Nginx HTTP Server.
                                                    [root@minio1 system]#
                                                    [root@minio1 system]# ps -ef | grep nginx
                                                    root 12651 1 0 13:34 ? 00:00:00 nginx: master process /usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf
                                                    nobody 12652 12651 0 13:34 ? 00:00:00 nginx: worker process
                                                    root 12666 2210 0 13:34 pts/0 00:00:00 grep --color=auto nginx
                                                    [root@minio1 system]#
                                                    [root@minio1 system]# netstat -tupln | grep nginx
                                                    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12651/nginx: master
                                                    tcp6 0 0 :::80 :::* LISTEN 12651/nginx: master
                                                    [root@minio1 system]#

                                                    可以看到,Nginx已经拉起来了。


                                                    12

                                                    KeepAlived


                                                    官方网站:

                                                    https://www.keepalived.org/

                                                    它的最新版本是「2.3.1」

                                                      Keepalived for Linux 
                                                      - Version 2.3.1
                                                      - Release Notes - May 24, 2024
                                                      - MD5SUM:={5434ebc3becb6f86ebc3adc04e3e7e6d}


                                                      下载链接:

                                                      https://keepalived.org/software/keepalived-2.3.1.tar.gz


                                                      KeepAlived:架构图:


                                                      13

                                                      KeepAlived:安装


                                                      一、源码编译


                                                      上传安装介质:

                                                      将从官网下载到的安装介质(源码包)上传服务器:

                                                        [root@minio1 keepalived]# pwd
                                                        /upload/keepalived
                                                        [root@minio1 keepalived]#
                                                        [root@minio1 keepalived]# ls -ltr
                                                        total 1184
                                                        -rw-r--r-- 1 root root 1210697 Sep 14 14:40 keepalived-2.3.1.tar.gz
                                                        [root@minio1 keepalived]#
                                                        [root@minio1 keepalived]# du -sh *
                                                        1.2M keepalived-2.3.1.tar.gz
                                                        [root@minio1 keepalived]#


                                                        解压:

                                                          [root@minio1 keepalived]# ls -ltr
                                                          total 1184
                                                          -rw-r--r-- 1 root root 1210697 Sep 14 14:40 keepalived-2.3.1.tar.gz
                                                          [root@minio1 keepalived]#
                                                          [root@minio1 keepalived]# tar -xzf keepalived-2.3.1.tar.gz
                                                          [root@minio1 keepalived]#
                                                          [root@minio1 keepalived]# ls -ltr
                                                          total 1188
                                                          drwxrwxr-x 10 1000 1000 4096 May 24 14:46 keepalived-2.3.1
                                                          -rw-r--r-- 1 root root 1210697 Sep 14 14:40 keepalived-2.3.1.tar.gz
                                                          [root@minio1 keepalived]#
                                                          [root@minio1 keepalived]# cd keepalived-2.3.1/
                                                          [root@minio1 keepalived-2.3.1]#
                                                          [root@minio1 keepalived-2.3.1]# ls -ltr
                                                          total 1216
                                                          -rw-rw-r-- 1 1000 1000 41 Sep 28 2009 AUTHOR
                                                          -rw-rw-r-- 1 1000 1000 18092 Nov 20 2012 COPYING
                                                          -rw-rw-r-- 1 1000 1000 823 Dec 25 2017 CONTRIBUTORS
                                                          -rwxrwxr-x 1 1000 1000 100 May 5 2020 build_setup
                                                          -rwxrwxr-x 1 1000 1000 100 Dec 21 2020 autogen.sh
                                                          -rw-rw-r-- 1 1000 1000 507110 Jan 27 2021 ChangeLog
                                                          -rw-rw-r-- 1 1000 1000 6898 Mar 15 2021 TODO
                                                          -rw-rw-r-- 1 1000 1000 3212 Nov 21 2021 Makefile.am
                                                          -rw-rw-r-- 1 1000 1000 2720 Nov 21 2021 Dockerfile.in
                                                          drwxrwxr-x 3 1000 1000 41 Jul 7 2022 snap
                                                          -rw-rw-r-- 1 1000 1000 10714 Jun 7 2023 keepalived.spec.in
                                                          -rw-rw-r-- 1 1000 1000 2963 Nov 22 2023 README.md
                                                          -rw-rw-r-- 1 1000 1000 9954 Mar 2 2024 INSTALL
                                                          -rw-rw-r-- 1 1000 1000 118553 May 24 14:37 configure.ac
                                                          -rw-rw-r-- 1 1000 1000 44361 May 24 14:46 aclocal.m4
                                                          -rw-rw-r-- 1 1000 1000 31979 May 24 14:46 Makefile.in
                                                          -rwxrwxr-x 1 1000 1000 451003 May 24 14:46 configure
                                                          drwxrwxr-x 2 1000 1000 26 May 24 14:46 tools
                                                          drwxrwxr-x 2 1000 1000 43 May 24 14:46 m4
                                                          drwxrwxr-x 2 1000 1000 4096 May 24 14:46 lib
                                                          drwxrwxr-x 10 1000 1000 260 May 24 14:46 keepalived
                                                          drwxrwxr-x 5 1000 1000 210 May 24 14:46 doc
                                                          drwxrwxr-x 2 1000 1000 83 May 24 14:46 build-aux
                                                          drwxrwxr-x 2 1000 1000 44 May 24 14:46 bin_install
                                                          [root@minio1 keepalived-2.3.1]#


                                                          源码安装:

                                                            ./configure
                                                            make
                                                            make install


                                                            二、YUM


                                                            更简单的安装方式是通过YUM:

                                                              [root@minio1 ~]# dnf search keepalived
                                                              Last metadata expiration check: 4:02:50 ago on Sat 14 Sep 2024 10:46:14 AM CST.
                                                              ======================================= Name Exactly Matched: keepalived =======================================
                                                              keepalived.x86_64 : Load balancer and high availability service
                                                              [root@minio1 ~]#
                                                              [root@minio1 ~]# dnf install keepalived
                                                              Last metadata expiration check: 4:03:00 ago on Sat 14 Sep 2024 10:46:14 AM CST.
                                                              Dependencies resolved.
                                                              ================================================================================================================
                                                              Package Arch Version Repository Size
                                                              ================================================================================================================
                                                              Installing:
                                                              keepalived x86_64 1.3.5-19.el7 base 332 k
                                                              Installing dependencies:
                                                              net-snmp-agent-libs x86_64 1:5.7.2-49.el7 base 708 k


                                                              Transaction Summary
                                                              ================================================================================================================
                                                              Install 2 Packages


                                                              Total download size: 1.0 M
                                                              Installed size: 3.0 M
                                                              Is this ok [y/N]: y
                                                              Downloading Packages:
                                                              (1/2): keepalived-1.3.5-19.el7.x86_64.rpm 3.6 MB/s | 332 kB 00:00
                                                              (2/2): net-snmp-agent-libs-5.7.2-49.el7.x86_64.rpm 7.4 MB/s | 708 kB 00:00
                                                              ----------------------------------------------------------------------------------------------------------------
                                                              Total 11 MB/s | 1.0 MB 00:00
                                                              Running transaction check
                                                              Transaction check succeeded.
                                                              Running transaction test
                                                              Transaction test succeeded.
                                                              Running transaction
                                                              Preparing : 1/1
                                                              Installing : net-snmp-agent-libs-1:5.7.2-49.el7.x86_64 1/2
                                                              Running scriptlet: net-snmp-agent-libs-1:5.7.2-49.el7.x86_64 1/2
                                                              Installing : keepalived-1.3.5-19.el7.x86_64 2/2
                                                              Running scriptlet: keepalived-1.3.5-19.el7.x86_64 2/2
                                                              Verifying : keepalived-1.3.5-19.el7.x86_64 1/2
                                                              Verifying : net-snmp-agent-libs-1:5.7.2-49.el7.x86_64 2/2


                                                              Installed:
                                                              keepalived-1.3.5-19.el7.x86_64 net-snmp-agent-libs-1:5.7.2-49.el7.x86_64


                                                              Complete!
                                                              [root@minio1 ~]#
                                                              [root@minio1 ~]# rpm -qa | grep keepalived
                                                              keepalived-1.3.5-19.el7.x86_64
                                                              [root@minio1 ~]#
                                                              [root@minio1 ~]# rpm -ql keepalived
                                                              /etc/keepalived
                                                              /etc/keepalived/keepalived.conf
                                                              /etc/sysconfig/keepalived
                                                              /usr/bin/genhash
                                                              /usr/lib/systemd/system/keepalived.service
                                                              /usr/libexec/keepalived
                                                              /usr/sbin/keepalived
                                                              /usr/share/doc/keepalived-1.3.5
                                                              /usr/share/doc/keepalived-1.3.5/AUTHOR
                                                              /usr/share/doc/keepalived-1.3.5/CONTRIBUTORS
                                                              /usr/share/doc/keepalived-1.3.5/COPYING
                                                              /usr/share/doc/keepalived-1.3.5/ChangeLog
                                                              /usr/share/doc/keepalived-1.3.5/NOTE_vrrp_vmac.txt
                                                              /usr/share/doc/keepalived-1.3.5/README
                                                              /usr/share/doc/keepalived-1.3.5/TODO
                                                              /usr/share/doc/keepalived-1.3.5/keepalived.conf.SYNOPSIS
                                                              /usr/share/doc/keepalived-1.3.5/samples
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.HTTP_GET.port
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.IPv6
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.SMTP_CHECK
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.SSL_GET
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.fwmark
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.inhibit
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.misc_check
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.misc_check_arg
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.quorum
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.sample
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.status_code
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.track_interface
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.virtual_server_group
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.virtualhost
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.localcheck
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.lvs_syncd
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.routes
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.rules
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.scripts
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.static_ipaddress
                                                              /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp.sync
                                                              /usr/share/doc/keepalived-1.3.5/samples/sample.misccheck.smbcheck.sh
                                                              /usr/share/man/man1/genhash.1.gz
                                                              /usr/share/man/man5/keepalived.conf.5.gz
                                                              /usr/share/man/man8/keepalived.8.gz
                                                              /usr/share/snmp/mibs/KEEPALIVED-MIB.txt
                                                              /usr/share/snmp/mibs/VRRP-MIB.txt
                                                              /usr/share/snmp/mibs/VRRPv3-MIB.txt
                                                              [root@minio1 ~]#


                                                              14

                                                              KeepAlived:主从配置


                                                              架构:

                                                              主节点192.168.2.41
                                                              从节点192.168.2.42


                                                              主节点配置:

                                                                [root@minio1 keepalived]# ifconfig
                                                                ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                                                                inet 192.168.2.41 netmask 255.255.255.0 broadcast 192.168.2.255
                                                                inet6 fe80::7d7a:b063:c131:ed30 prefixlen 64 scopeid 0x20<link>
                                                                ether 00:50:56:ac:48:20 txqueuelen 1000 (Ethernet)
                                                                RX packets 577044 bytes 438612765 (418.2 MiB)
                                                                RX errors 0 dropped 435 overruns 0 frame 0
                                                                TX packets 124090 bytes 559646912 (533.7 MiB)
                                                                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


                                                                lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
                                                                inet 127.0.0.1 netmask 255.0.0.0
                                                                inet6 ::1 prefixlen 128 scopeid 0x10<host>
                                                                loop txqueuelen 1000 (Local Loopback)
                                                                RX packets 568 bytes 45128 (44.0 KiB)
                                                                RX errors 0 dropped 0 overruns 0 frame 0
                                                                TX packets 568 bytes 45128 (44.0 KiB)
                                                                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


                                                                virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
                                                                inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
                                                                ether 52:54:00:5c:41:0b txqueuelen 1000 (Ethernet)
                                                                RX packets 0 bytes 0 (0.0 B)
                                                                RX errors 0 dropped 0 overruns 0 frame 0
                                                                TX packets 0 bytes 0 (0.0 B)
                                                                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


                                                                [root@minio1 keepalived]#
                                                                [root@minio1 keepalived]# pwd
                                                                /etc/keepalived
                                                                [root@minio1 keepalived]#
                                                                [root@minio1 keepalived]# ls -ltr
                                                                total 8
                                                                -rw-r--r-- 1 root root 3598 Oct 1 2020 keepalived.conf_bak_20240914_1454
                                                                -rw-r--r-- 1 root root 507 Sep 14 14:55 keepalived.conf
                                                                [root@minio1 keepalived]#
                                                                [root@minio1 keepalived]# cat keepalived.conf
                                                                global_defs {
                                                                router_id r1
                                                                script_user root
                                                                }


                                                                vrrp_script check_nginx {
                                                                script "/etc/keepalived/check-nginx.sh"
                                                                interval 2
                                                                weight -2
                                                                fall 2
                                                                rise 2
                                                                }


                                                                vrrp_instance VI_1 {
                                                                state MASTER
                                                                interface ens192
                                                                virtual_router_id 51
                                                                priority 100
                                                                advert_int 1
                                                                authentication {
                                                                auth_type PASS
                                                                auth_pass Nephilim@123
                                                                }
                                                                virtual_ipaddress {
                                                                192.168.2.45
                                                                }
                                                                track_script {
                                                                check_nginx
                                                                }
                                                                }


                                                                [root@minio1 keepalived]#


                                                                从节点配置:

                                                                  [root@minio2 keepalived]# pwd
                                                                  /etc/keepalived
                                                                  [root@minio2 keepalived]#
                                                                  [root@minio2 keepalived]# ls -ltr
                                                                  total 4
                                                                  -rw-r--r-- 1 root root 506 Sep 14 14:56 keepalived.conf
                                                                  [root@minio2 keepalived]#
                                                                  [root@minio2 keepalived]# cat keepalived.conf
                                                                  global_defs {
                                                                  router_id r2
                                                                  script_user root
                                                                  }


                                                                  vrrp_script check_nginx {
                                                                  script "/etc/keepalived/check-nginx.sh"
                                                                  interval 2
                                                                  weight -2
                                                                  fall 2
                                                                  rise 2
                                                                  }


                                                                  vrrp_instance VI_1 {
                                                                  state BACKUP
                                                                  interface ens192
                                                                  virtual_router_id 51
                                                                  priority 99
                                                                  advert_int 1
                                                                  authentication {
                                                                  auth_type PASS
                                                                  auth_pass Nephilim@123
                                                                  }
                                                                  virtual_ipaddress {
                                                                  192.168.2.45
                                                                  }
                                                                  track_script {
                                                                  check_nginx
                                                                  }
                                                                  }


                                                                  [root@minio2 keepalived]#


                                                                  同一套 KeepAlived主从:

                                                                  • virtual_router_id,必须保持一致

                                                                  • priority,数值越高,优先级越高

                                                                  • auth_pass,必须保持一致

                                                                  • interface,虚拟IP挂载到哪块网卡上

                                                                  • virtual_ipaddress,虚拟IP的值

                                                                  • track_script,检测脚本;如果执行失败,则「虚拟IP」将在主从之间切换


                                                                  Nginx检测脚本:

                                                                    [root@minio1 keepalived]# pwd
                                                                    /etc/keepalived
                                                                    [root@minio1 keepalived]#
                                                                    [root@minio1 keepalived]# ls -ltr
                                                                    total 12
                                                                    -rw-r--r-- 1 root root 3598 Oct 1 2020 keepalived.conf_bak_20240914_1454
                                                                    -rw-r--r-- 1 root root 477 Sep 14 14:58 keepalived.conf
                                                                    -rw-r--r-- 1 root root 199 Sep 14 15:03 check-nginx.sh
                                                                    [root@minio1 keepalived]#
                                                                    [root@minio1 keepalived]# cat check-nginx.sh
                                                                    #!/bin/sh


                                                                    if [ $(ps -C nginx --no-header|wc -l) -eq 0 ]; then
                                                                    systemctl start nginx
                                                                    sleep 1
                                                                    if [ $(ps -C nginx --no-header|wc -l) -eq 0 ]; then
                                                                    exit 1
                                                                    fi
                                                                    else
                                                                    exit 0
                                                                    fi


                                                                    [root@minio1 keepalived]#
                                                                    [root@minio1 keepalived]# ll
                                                                    total 12
                                                                    -rw-r--r-- 1 root root 199 Sep 14 15:03 check-nginx.sh
                                                                    -rw-r--r-- 1 root root 477 Sep 14 14:58 keepalived.conf
                                                                    -rw-r--r-- 1 root root 3598 Oct 1 2020 keepalived.conf_bak_20240914_1454
                                                                    [root@minio1 keepalived]#
                                                                    [root@minio1 keepalived]# chmod +x check-nginx.sh
                                                                    [root@minio1 keepalived]#
                                                                    [root@minio1 keepalived]# scp check-nginx.sh root@minio2:/etc/keepalived/
                                                                    check-nginx.sh 100% 199 246.6KB/s 00:00
                                                                    [root@minio1 keepalived]#


                                                                    启动 KeepAlived 之前:

                                                                      [root@minio1 keepalived]# systemctl status keepalived
                                                                      ● keepalived.service - LVS and VRRP High Availability Monitor
                                                                      Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
                                                                      Active: inactive (dead) since Sat 2024-09-14 14:51:37 CST; 14min ago
                                                                      Process: 13698 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
                                                                      Main PID: 13701 (code=exited, status=0/SUCCESS)


                                                                      Sep 14 14:51:31 minio1 Keepalived_healthcheckers[13702]: Activating healthchecker for service [10.10.10.3]:1358
                                                                      Sep 14 14:51:31 minio1 Keepalived_healthcheckers[13702]: Activating healthchecker for service [10.10.10.3]:1358
                                                                      Sep 14 14:51:32 minio1 Keepalived_vrrp[13703]: Stopped
                                                                      Sep 14 14:51:32 minio1 Keepalived[13701]: Keepalived_vrrp exited with permanent error CONFIG. Terminating
                                                                      Sep 14 14:51:32 minio1 Keepalived[13701]: Stopping
                                                                      Sep 14 14:51:32 minio1 Keepalived_healthcheckers[13702]: Removing service [192.168.201.100]:443 from VS [1...443
                                                                      Sep 14 14:51:32 minio1 Keepalived_healthcheckers[13702]: Removing service [192.168.200.4]:1358 from VS [10...358
                                                                      Sep 14 14:51:32 minio1 Keepalived_healthcheckers[13702]: Removing service [192.168.200.5]:1358 from VS [10...358
                                                                      Sep 14 14:51:32 minio1 Keepalived_healthcheckers[13702]: Stopped
                                                                      Sep 14 14:51:37 minio1 Keepalived[13701]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
                                                                      Hint: Some lines were ellipsized, use -l to show in full.
                                                                      [root@minio1 keepalived]#
                                                                      [root@minio1 keepalived]# ip addr
                                                                      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
                                                                      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
                                                                      inet 127.0.0.1/8 scope host lo
                                                                      valid_lft forever preferred_lft forever
                                                                      inet6 ::1/128 scope host
                                                                      valid_lft forever preferred_lft forever
                                                                      2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
                                                                      link/ether 00:50:56:ac:48:20 brd ff:ff:ff:ff:ff:ff
                                                                      inet 192.168.2.41/24 brd 192.168.2.255 scope global noprefixroute ens192
                                                                      valid_lft forever preferred_lft forever
                                                                      inet6 fe80::7d7a:b063:c131:ed30/64 scope link noprefixroute
                                                                      valid_lft forever preferred_lft forever
                                                                      3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
                                                                      link/ether 52:54:00:5c:41:0b brd ff:ff:ff:ff:ff:ff
                                                                      inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
                                                                      valid_lft forever preferred_lft forever
                                                                      4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
                                                                      link/ether 52:54:00:5c:41:0b brd ff:ff:ff:ff:ff:ff
                                                                      [root@minio1 keepalived]#

                                                                      可以通过「ip addr」看到,当前「ens192」上并没有挂载 虚拟IP


                                                                      KeepAlived启动后:

                                                                        [root@minio1 keepalived]# systemctl start keepalived
                                                                        [root@minio1 keepalived]#
                                                                        [root@minio1 keepalived]# systemctl status keepalived
                                                                        ● keepalived.service - LVS and VRRP High Availability Monitor
                                                                        Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
                                                                        Active: active (running) since Sat 2024-09-14 15:06:23 CST; 5s ago
                                                                        Process: 13968 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
                                                                        Main PID: 13970 (keepalived)
                                                                        Tasks: 3
                                                                        CGroup: /system.slice/keepalived.service
                                                                        ├─13970 /usr/sbin/keepalived -D
                                                                        ├─13972 /usr/sbin/keepalived -D
                                                                        └─13973 /usr/sbin/keepalived -D


                                                                        Sep 14 15:06:23 minio1 Keepalived_vrrp[13973]: VRRP_Script(check_nginx) succeeded
                                                                        Sep 14 15:06:24 minio1 Keepalived_vrrp[13973]: VRRP_Instance(VI_1) Transition to MASTER STATE
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: VRRP_Instance(VI_1) Entering MASTER STATE
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: VRRP_Instance(VI_1) setting protocol VIPs.
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: Sending gratuitous ARP on ens192 for 192.168.2.45
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on en...2.45
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: Sending gratuitous ARP on ens192 for 192.168.2.45
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: Sending gratuitous ARP on ens192 for 192.168.2.45
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: Sending gratuitous ARP on ens192 for 192.168.2.45
                                                                        Sep 14 15:06:25 minio1 Keepalived_vrrp[13973]: Sending gratuitous ARP on ens192 for 192.168.2.45
                                                                        Hint: Some lines were ellipsized, use -l to show in full.
                                                                        [root@minio1 keepalived]#
                                                                        [root@minio1 keepalived]# ip addr
                                                                        1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
                                                                        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
                                                                        inet 127.0.0.1/8 scope host lo
                                                                        valid_lft forever preferred_lft forever
                                                                        inet6 ::1/128 scope host
                                                                        valid_lft forever preferred_lft forever
                                                                        2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
                                                                        link/ether 00:50:56:ac:48:20 brd ff:ff:ff:ff:ff:ff
                                                                        inet 192.168.2.41/24 brd 192.168.2.255 scope global noprefixroute ens192
                                                                        valid_lft forever preferred_lft forever
                                                                        inet 192.168.2.45/32 scope global ens192
                                                                        valid_lft forever preferred_lft forever
                                                                        inet6 fe80::7d7a:b063:c131:ed30/64 scope link noprefixroute
                                                                        valid_lft forever preferred_lft forever
                                                                        3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
                                                                        link/ether 52:54:00:5c:41:0b brd ff:ff:ff:ff:ff:ff
                                                                        inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
                                                                        valid_lft forever preferred_lft forever
                                                                        4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
                                                                        link/ether 52:54:00:5c:41:0b brd ff:ff:ff:ff:ff:ff
                                                                        [root@minio1 keepalived]#

                                                                        可以看到 虚拟IP「192.168.2.45」已经被挂载到了「ens192」上了。


                                                                        15

                                                                        通过Keepalived的VIP访问MINIO

                                                                        如果上述步骤都成功执行,此时就可以通过Keepalived服务挂载的VIP访问MINIO了:


                                                                        至此,MINIO的集群部署,就全部完成了。





                                                                        END




                                                                        温馨提示



                                                                        如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。


                                                                        文章转载自Nephilim,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                        评论