Хранилище · 4 min read · Jan 18, 2026
Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 11.10 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения
Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 11.10 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
Этот учебник показывает, как настроить высокодоступное хранилище с двумя серверами хранения (Ubuntu 11.10), которые используют GlusterFS. Каждый сервер хранения будет зеркалом другого сервера хранения, и файлы будут автоматически реплицироваться между обоими серверами хранения. Клиентская система (также Ubuntu 11.10) сможет получить доступ к хранилищу так, как если бы это была локальная файловая система. 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 11.10, поэтому мы можем установить его следующим образом:
apt-get install glusterfs-serverКоманда
glusterfsd --versionдолжна теперь показать версию GlusterFS, которую вы только что установили (в данном случае 3.2.1):
root@server1:~# glusterfsd --version
glusterfs 3.2.1 built on Jun 28 2011 07:43:56
Repository revision: v3.2.1
Copyright (c) 2006-2010 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU Affero 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.