RHEL7.9安裝Podman4.1.1並部署Redis集羣

原文鏈接:RHEL7.9安裝Podman4.1.1並部署Redis集羣-語雀

環境

  • 操作系統
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
  • OS Kernel
cat /proc/version
Linux version 3.10.0-1160.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 18 14:50:17 EDT 2020
  • 節點
    | IP Addr | hostname |
    | --- | --- |
    | 192.168.1.19 | node19 |
    | 192.168.1.21 | node21 |
    | 192.168.1.23 | node23 |
    | 192.168.1.25 | node25 |
    | 192.168.1.27 | node27 |
    | 192.168.1.29 | node29 |
cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.19 node19
192.168.1.21 node21
192.168.1.23 node23
192.168.1.25 node25
192.168.1.27 node27
192.168.1.29 node29

掛載cdrom並配置yum源

# 確認存在光盤設備
ll /dev/cdrom
mkdir /mnt/cdrom
# 配置文件系統掛載
cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Feb  8 06:27:47 2021
#
# 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/rhel_tecchen-root /                       xfs     defaults        0 0
UUID=cb77bcfb-64ea-4ad8-a30a-f9e706b6dfaf /boot                   xfs     defaults        0 0
/dev/mapper/rhel_tecchen-swap swap                    swap    defaults        0 0
# 配置掛載光盤
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0 

掛載所有設備
mount -a

# 配置yum源
cat /etc/yum.repos.d/rhel7.repo 
[rhel-7]
name=rhel-7
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release

# 查看yum源
yum repolist

修改yum源

# 查找yum組件
rpm -qa | grep yum
# 卸載yum組件
rpm -e PackageKit-yum-1.1.10-2.el7.x86_64 --nodeps
rpm -e yum-rhn-plugin-2.0.1-10.el7.noarch --nodeps
rpm -e yum-metadata-parser-1.1.4-10.el7.x86_64 --nodeps
rpm -e yum-3.4.3-168.el7.noarch --nodeps
rpm -e yum-langpacks-0.4.2-7.el7.noarch --nodeps
rpm -e yum-utils-1.1.31-54.el7_8.noarch  --nodeps

# 下載清華centos yum組件
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/yum-updateonboot-1.1.31-54.el7_8.noarch.rpm
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
# 安裝yum
rpm -ivh yum-*
  • cat CentOS-Base.repo
# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client. You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

#

#

[base]

name=CentOS-7 - Base

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/$basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=os

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-7 - Updates

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/updates/$basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=updates

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful

[extras]

name=CentOS-7 - Extras

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/$basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=extras

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-7 - Plus

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/centosplus/$basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=centosplus

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

安裝gcc

yum install -y gcc

安裝go

  • The Go compilers support the following instruction sets
The Go compilers support the following instruction sets:

amd64, 386
    The x86 instruction set, 64- and 32-bit. 
arm64, arm
    The ARM instruction set, 64-bit (AArch64) and 32-bit. 
mips64, mips64le, mips, mipsle
    The MIPS instruction set, big- and little-endian, 64- and 32-bit. 
ppc64, ppc64le
    The 64-bit PowerPC instruction set, big- and little-endian. 
riscv64
    The 64-bit RISC-V instruction set. 
s390x
    The IBM z/Architecture. 
wasm
    WebAssembly. 

Be careful to double-check that the version of golang is new enough (i.e. go version), as of January 2022 version 1.16.x or higher is required. The current minimum required version can always be found in the go.mod file.

wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz
# wget https://studygolang.com/dl/golang/go1.18.4.linux-amd64.tar.gz
tar -C /usr/local -xvzf go1.18.4.linux-amd64.tar.gz
cat /etc/profile
export GO_HOME=/usr/local/go
export PATH=$GO_HOME/bin:$PATH

源碼安裝Podman

wget https://github.com/containers/podman/archive/refs/tags/v4.1.1.tar.gz
mv v4.1.1.tar.gz podman-v4.1.1.tar.gz
tar -C /usr/local -xvzf podman-v4.1.1.tar.gz
cd podman-4.1.1
make BUILDTAGS=""
sudo make install PREFIX=/usr

優化

  • This system is not registered with an entitlement server. You can use subscription-manager to register.

修改/etc/yum/pluginconf.d/subscription-manager.conf的enabled爲0,也可以直接使用~~sed -i s/1/0/g /etc/yum/pluginconf.d/subscription-manager.conf~~替換。

cat /etc/yum/pluginconf.d/subscription-manager.conf

[main]
enabled=0

源碼安裝Redis

安裝命令

wget https://github.com/redis/redis/archive/7.0.4.tar.gz
mv 7.0.4.tar.gz redis-v7.0.4.tar.gz
tar -xvzf redis-v7.0.4.tar.gz -C /usr/local/
ln -s redis-7.0.4/ redis
cd redis
make 
make install

配置集羣

redis.conf
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode no
獲取本機IP
ip a s 
ip a s  ens32
ip a s  ens32 | sed -n '3p'
ip a s  ens32 | sed -n '3p' | sed -r 's#^.*net (.*)/24.*#\1#g'
ip a s  ens32 | sed -rn '3s#^.*net (.*)/24.*#\1#gp'
替換IP(將Redis的87行替換爲bind $ip的值)
ip=$(ip a s  ens32 | sed -rn '3s#^.*net (.*)/24.*#\1#gp')
sed -i "87cbind $ip" redis.conf | grep bind
sed -i "534cmasterauth redis-masterauth-pwd" redis.conf
sed -i "1036crequirepass redis-cluster-pwd" redis.conf | grep requirepass
啓動redis服務

redis-server ./redis.conf

停止redis服務

redis-cli shutdown

kill `pidof redis-server`
ps -ef | grep redis

/usr/local/bin/redis-cli -h 192.168.1.29 -a redis-cluster-pwd shutdown
啓動集羣
redis-cli --cluster create -a redis-cluster-pwd 192.168.1.19:6379 192.168.1.21:6379 \
192.168.1.23:6379 192.168.1.25:6379 192.168.1.27:6379 192.168.1.29:6379 \
--cluster-replicas 1


/usr/local/bin/redis-server redis.conf

集羣節點

[root@node25 redis]# redis-cli --cluster create -a redis-cluster-pwd 192.168.1.19:6379 192.168.1.21:6379 \
> 192.168.1.23:6379 192.168.1.25:6379 192.168.1.27:6379 192.168.1.29:6379 \
> --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.27:6379 to 192.168.1.19:6379
Adding replica 192.168.1.29:6379 to 192.168.1.21:6379
Adding replica 192.168.1.25:6379 to 192.168.1.23:6379
M: b3283f06d699f5487d98b0f041efc87cfc86c3a4 192.168.1.19:6379
   slots:[0-5460] (5461 slots) master
M: 35da82be1d721be547e31dc0bc5248fa7254eeeb 192.168.1.21:6379
   slots:[5461-10922] (5462 slots) master
M: 344385bc04f54870093df0c87a9b89405935f9d1 192.168.1.23:6379
   slots:[10923-16383] (5461 slots) master
S: db545ccd3aaf469952e8286b8ad0db950c1c6a59 192.168.1.25:6379
   replicates 344385bc04f54870093df0c87a9b89405935f9d1
S: 01b9632922069507c1e49d8b179a5c6ce8a88a7d 192.168.1.27:6379
   replicates b3283f06d699f5487d98b0f041efc87cfc86c3a4
S: 1d6c25797f4a9fdcd7a72d019f9445951abe77db 192.168.1.29:6379
   replicates 35da82be1d721be547e31dc0bc5248fa7254eeeb
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.1.19:6379)
M: b3283f06d699f5487d98b0f041efc87cfc86c3a4 192.168.1.19:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 01b9632922069507c1e49d8b179a5c6ce8a88a7d 192.168.1.27:6379
   slots: (0 slots) slave
   replicates b3283f06d699f5487d98b0f041efc87cfc86c3a4
M: 35da82be1d721be547e31dc0bc5248fa7254eeeb 192.168.1.21:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: db545ccd3aaf469952e8286b8ad0db950c1c6a59 192.168.1.25:6379
   slots: (0 slots) slave
   replicates 344385bc04f54870093df0c87a9b89405935f9d1
M: 344385bc04f54870093df0c87a9b89405935f9d1 192.168.1.23:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 1d6c25797f4a9fdcd7a72d019f9445951abe77db 192.168.1.29:6379
   slots: (0 slots) slave
   replicates 35da82be1d721be547e31dc0bc5248fa7254eeeb
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node23 redis]# cat node-6379.conf 
b3283f06d699f5487d98b0f041efc87cfc86c3a4 192.168.1.19:6379@16379 master - 0 1659967283288 1 connected 0-5460
db545ccd3aaf469952e8286b8ad0db950c1c6a59 192.168.1.25:6379@16379 slave 344385bc04f54870093df0c87a9b89405935f9d1 0 1659967285313 3 connected
35da82be1d721be547e31dc0bc5248fa7254eeeb 192.168.1.21:6379@16379 master - 0 1659967283000 2 connected 5461-10922
1d6c25797f4a9fdcd7a72d019f9445951abe77db 192.168.1.29:6379@16379 slave 35da82be1d721be547e31dc0bc5248fa7254eeeb 0 1659967284000 2 connected
01b9632922069507c1e49d8b179a5c6ce8a88a7d 192.168.1.27:6379@16379 slave b3283f06d699f5487d98b0f041efc87cfc86c3a4 0 1659967284300 1 connected
344385bc04f54870093df0c87a9b89405935f9d1 192.168.1.23:6379@16379 myself,master - 0 1659967282000 3 connected 10923-16383
vars currentEpoch 6 lastVoteEpoch 0

參考資料

  1. http://blog.itpub.net/31516603/viewspace-2788098/
  2. https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/
  3. https://redis.io/docs/getting-started/installation/install-redis-from-source/
  4. https://redis.io/docs/manual/scaling/
  5. https://blog.csdn.net/Andrew0219/article/details/120429055
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章