Rumah >pangkalan data >Redis >Bagaimana untuk membina kluster Redis berdasarkan Docker

Bagaimana untuk membina kluster Redis berdasarkan Docker

王林
王林ke hadapan
2023-05-30 12:46:071439semak imbas

Persekitaran: Docker + (Redis:5.0.5 * 3)

1 Tarik imej

docker  pull  redis:5.0.5

Bagaimana untuk membina kluster Redis berdasarkan Docker

2 🎜 >

Buat tiga bekas redis:

  • redis-node1:6379

  • redis-node2:6380

  • redis-node3: 6381

  • docker create --name redis-node1 -v /data/redis-data/node1:/data -p 6379:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf
    
    docker create --name redis-node2 -v /data/redis-data/node2:/data -p 6380:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf
    
    docker create --name redis-node3 -v /data/redis-data/node3:/data -p 6381:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf

Bagaimana untuk membina kluster Redis berdasarkan Docker

3 Mulakan dan bentuk gugusan

Mulakan bekas
Mula-mula mulakan tiga bekas Redis melalui arahan

: docker start

Bagaimana untuk membina kluster Redis berdasarkan Docker

Selepas melaksanakan arahan berjalan, semak status permulaan bekas:

Bagaimana untuk membina kluster Redis berdasarkan Docker

Jika situasi di atas berlaku,

, anda boleh melihatnya melalui Exited (1) 3 seconds ago: docker logs

Bagaimana untuk membina kluster Redis berdasarkan Docker

Gesaan di atas ialah isu kebenaran, kami cuba mengubah suainya Keizinan berikut:

chmod -R  777 /data

Selepas berjaya memulakan, seperti ditunjukkan di bawah:

Bagaimana untuk membina kluster Redis berdasarkan Docker

Tubuhkan kelompok
Lihat tiga Redis yang diperuntukkan dalam maklumat nod IP Docker:

执行「docker inspect redis-node1」得到 redis-node1 ip 信息为:172.17.0.4 
执行「docker inspect redis-node2」得到 redis-node2 ip 信息为:172.17.0.3 
执行「docker inspect redis-node3」得到 redis-node3 ip 信息为:172.17.0.2

Bagaimana untuk membina kluster Redis berdasarkan Docker

Selepas mendapat maklumat IP (maklumat IP setiap orang mungkin berbeza), kemudian masukkan bekas tertentu untuk membentuk kluster:

# 这里以进入 node1 为例
docker exec -it redis-node1 /bin/bash

# 接着执行组建集群命令(请根据自己的ip信息进行拼接)
redis-cli --cluster create 172.17.0.2:6379  172.17.0.3:6379  172.17.0.4:6379 --cluster-replicas 0

Bagaimana untuk membina kluster Redis berdasarkan Docker

ok, kini kluster telah disediakan, mari kita ujinya seterusnya.

Kluster ujian
Gunakan perintah

untuk menyambung ke nod kluster, dan kemudian tetapkan nilai Selepas nilai yang ditetapkan, ia akan mengubah hala secara automatik ke alamat ip 0.2, dan kemudian mendapatkannya melalui mendapatkan untuk mendapatkan sijil kejayaan Kluster adalah sah. redis-cli -c

Bagaimana untuk membina kluster Redis berdasarkan Docker

4. Masalah

Mengikut langkah di atas, walaupun kluster berjaya dibina, masih terdapat beberapa masalah diperuntukkan secara dalaman dalam dok, seperti:

dsb. Jika projek menggunakan ip地址 tidak berada pada pelayan yang sama dengan kluster, maka projek itu tidak boleh menggunakan kluster kerana ia tidak boleh diakses. 172.17.0.2redis集群

Bagaimana untuk membina kluster Redis berdasarkan DockerSatu penyelesaian ialah membenarkan

Docker

menggunakan jenis sambungan rangkaian dan Dockerhost模式 menggunakan The kontena yang dicipta tidak mempunyai ruang nama rangkaian bebasnya sendiri Ia berkongsi ruang rangkaian dengan mesin fizikal, dan boleh berkongsi semua port dan IP host模式 mesin fizikal, supaya rangkaian awam boleh mengakses kontena secara terus. . Walaupun kaedah ini mempunyai risiko keselamatan, tiada mod lain yang boleh dilaksanakan telah ditemui. Mengenai masalah yang ada, kami mengguna pakai semula

dan mencipta semula bekas:

host模式1 Hentikan bekas yang sedang berjalan

docker stop redis-node1 redis-node2 redis-node3
2 bekas
docker rm redis-node1 redis-node2 redis-node3

# 清空上面创建的配置文件
rm -rf /data/redis-data/node*
3. Cipta
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381
berdasarkan mod hos sekali lagi Ia berbeza daripada arahan penciptaan sebelumnya. Kedua, tiada port diperlukan dalam kes ini, seperti
, kerana perkhidmatan port kontena perlu dikongsi secara luaran pada masa ini, jadi anda hanya perlu menentukan port yang terdedah secara luaran

, --net, dll. host-p 6379:6379-p 6379-p 6380

4 Mulakan bekas dan bentukkan gugusan

# 启动命令
docker start redis-node1 redis-node2 redis-node3

# 进入某一个容器
docker exec -it redis-node1 /bin/bash

# 组建集群,10.211.55.4为当前物理机的ip地址
redis-cli --cluster create 10.211.55.4:6379  10.211.55.4:6380  10.211.55.4:6381 --cluster-replicas 0
Bagaimana untuk membina kluster Redis berdasarkan Docker

5

6. Uji gugusan Bagaimana untuk membina kluster Redis berdasarkan Docker

Gunakan
untuk menyambung ke gugusan,
nilai, dan kemudian dapatkan nilai daripada nod lain untuk melihat sama ada ia berjaya:
root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes
72c291c32815194b64d1f6d0fdf771f5cc04e14a 10.211.55.4:6380@16380 master - 0 1590905997358 2 connected 5461-10922
6a595b67bbff15c94e5874c2d2cd556d6a6a6c17 10.211.55.4:6381@16381 master - 0 1590905998362 3 connected 10923-16383
4e3dbdc8f835dcbc38291c88f08165ee51d53d3d 10.211.55.4:6379@16379 myself,master - 0 1590905997000 1 connected 0-5460
127.0.0.1:6379>

redis-cli -c

Atas ialah kandungan terperinci Bagaimana untuk membina kluster Redis berdasarkan Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam