Хранилище · 4 min read · Jan 18, 2026
Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 12.04 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения
Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 12.04 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
Этот учебник показывает, как настроить высокодоступное хранилище с двумя серверами хранения (Ubuntu 12.04), которые используют GlusterFS. Каждый сервер хранения будет зеркалом другого сервера хранения, и файлы будут автоматически реплицироваться между обоими серверами хранения. Клиентская система (также Ubuntu 12.04) сможет получить доступ к хранилищу так, как если бы это была локальная файловая система. GlusterFS - это кластерная файловая система, способная масштабироваться до нескольких петабайт. Она агрегирует различные хранилищные блоки через Infiniband RDMA или TCP/IP соединение в одну большую параллельную сетевую файловую систему. Хранилищные блоки могут быть сделаны из любого стандартного оборудования, такого как серверы x86_64 с SATA-II RAID и Infiniband HBA.
Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую три системы, два сервера и клиента:
- server1.example.com: IP-адрес 192.168.0.100 (сервер)
- server2.example.com: IP-адрес 192.168.0.101 (сервер)
- client1.example.com: IP-адрес 192.168.0.102 (клиент)
Поскольку мы будем выполнять все шаги из этого учебника с правами root, мы можем либо добавлять строку sudo ко всем командам в этом учебнике, либо стать root прямо сейчас, набрав
sudo suВсе три системы должны иметь возможность разрешать имена хостов других систем. Если это невозможно сделать через DNS, вам следует отредактировать файл /etc/hosts, чтобы он выглядел следующим образом на всех трех системах:
vi /etc/hosts| 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 192.168.0.101 server2.example.com server2 192.168.0.102 client1.example.com client1 # Следующие строки желательны для хостов, поддерживающих IPv6 ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts |
(Также возможно использовать IP-адреса вместо имен хостов в следующей настройке. Если вы предпочитаете использовать IP-адреса, вам не нужно беспокоиться о том, могут ли быть разрешены имена хостов или нет.)
2 Настройка серверов GlusterFS
server1.example.com/server2.example.com:
GlusterFS доступен в виде пакета для Ubuntu 12.04, поэтому мы можем установить его следующим образом:
apt-get install glusterfs-serverКоманда
glusterfsd --versionдолжна теперь показать версию GlusterFS, которую вы только что установили (в данном случае 3.2.5):
root@server1:~# glusterfsd --version
glusterfs 3.2.5 built on Jan 31 2012 07:39:58
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
root@server1:~# Если вы используете брандмауэр, убедитесь, что TCP порты 111, 24007, 24008, 24009-(24009 + количество блоков по всем томам) открыты на server1.example.com и server2.example.com.
Далее мы должны добавить server2.example.com в доверительный пул хранения (обратите внимание, что я выполняю все команды конфигурации GlusterFS с server1.example.com, но вы также можете выполнять их с server2.example.com, потому что конфигурация реплицируется между узлами GlusterFS - просто убедитесь, что вы используете правильные имена хостов или IP-адреса):
server1.example.com:
На server1.example.com выполните
gluster peer probe server2.example.comroot@server1:~# gluster peer probe server2.example.com
Probe successful
root@server1:~#Статус доверительного пула хранения теперь должен быть похож на это:
gluster peer statusroot@server1:~# gluster peer status
Number of Peers: 1Hostname: server2.example.com
Uuid: 7cd93007-fccb-4fcb-8063-133e6ba81cd9
State: Peer in Cluster (Connected)
root@server1:~#Далее мы создаем общий ресурс с именем testvol с двумя репликами (обратите внимание, что количество реплик равно количеству серверов в данном случае, потому что мы хотим настроить зеркалирование) на server1.example.com и server2.example.com в директории /data (это будет создано, если его не существует):
gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/dataroot@server1:~# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
Creation of volume testvol has been successful. Please start the volume to access data.
root@server1:~#Запустите том:
gluster volume start testvolВозможно, что вышеуказанная команда сообщит вам, что действие не было успешным:
root@server1:~# gluster volume start testvol
Starting volume testvol has been unsuccessful
root@server1:~#В этом случае вам следует проверить вывод…
server1.example.com/server2.example.com:
netstat -tap | grep glusterfsdна обоих серверах.
Если вы получите вывод, похожий на этот…
root@server1:~# netstat -tap | grep glusterfsd
tcp 0 0 *:24009 *:* LISTEN 1548/glusterfsd
tcp 0 0 localhost.localdom:1019 localhost.localdo:24007 ESTABLISHED 1548/glusterfsd
root@server1:~#… все в порядке, но если вы не получите никакого вывода…
root@server2:~# netstat -tap | grep glusterfsd
root@server2:~#… перезапустите демон GlusterFS на соответствующем сервере (server2.example.com в данном случае):
server2.example.com:
/etc/init.d/glusterfs-server restartЗатем проверьте вывод…
netstat -tap | grep glusterfsd… снова на этом сервере - он теперь должен выглядеть так:
root@server2:~# netstat -tap | grep glusterfsd
tcp 0 0 *:24010 *:* LISTEN 1458/glusterfsd
tcp 0 0 localhost.localdom:1021 localhost.localdo:24007 ESTABLISHED 1458/glusterfsd
root@server2:~#Теперь вернемся к server1.example.com:
server1.example.com:
Вы можете проверить статус тома с помощью команды
gluster volume inforoot@server1:~# gluster volume infoVolume Name: testvol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
root@server1:~#По умолчанию все клиенты могут подключаться к тому. Если вы хотите предоставить доступ только client1.example.com (= 192.168.0.102), выполните:
gluster volume set testvol auth.allow 192.168.0.102Обратите внимание, что возможно использовать подстановочные знаки для IP-адресов (например, 192.168.*) и что вы можете указать несколько IP-адресов, разделенных запятой (например, 192.168.0.102,192.168.0.103).
Информация о томе теперь должна показывать обновленный статус:
gluster volume inforoot@server1:~# gluster volume infoVolume Name: testvol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Options Reconfigured:
auth.allow: 192.168.0.102
root@server1:~#Get new posts in your inbox
No spam. Unsubscribe anytime.