[MySQL, Администрирование баз данных] Развертывание кластера баз данных через Vagrant с помощью ClusterControl (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Если вы работаете с большим количеством виртуальных машин, то Vagrant, вероятно, будет лучшим инструментом для их создания, автоматизации и управления, повышая эффективность и производительность развертывания (особенно для dev-окружений). ClusterControl также может быть развернут через Vagrant.Vagrant поддерживает различные платформы виртуализации: VirtualBox, KVM, Hyper-V, контейнеры Docker, VMware и AWS. Мы в качестве провайдера виртуальных машин будем использовать VirtualBox, а для их провижининга — Vagrant.Скачать VirtualBox можно отсюда, а Vagrant отсюда. Установите их и можете двигаться дальше.Развертывание ClusterControl через VagrantДля развертывания виртуальной машины с ClusterControl создайте следующие файлы:
- Vagrantfile — определение и спецификация виртуальной машины.
- deploy-cc.sh — bash-скрипт для установки ClusterControl.
Создайте каталог для Vagrantfile.
$ mkdir ~/vagrant/clustercontrol
$ cd ~/vagrant/clustercontrol
Создайте Vagrantfile:
$ vim Vagrantfile
Добавьте в него следующие строки:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 443, host: 8443
config.vm.network :private_network, ip: "192.168.11.11"
config.vm.hostname = "cc.local"
config.vm.provision "shell" do |s|
s.inline = "yum install -y vim wget"
end
config.vm.provision "shell", path: "deploy-cc.sh"
config.vm.provider :virtualbox do |vb|
vb.customize [
"modifyvm", :id,
"--memory", "4096",
]
end
end
Создайте сценарий развертывания deploy-cc.sh в этом же каталоге. Этот скрипт будет выполняться автоматически при каждом запуске виртуальной машины:
$ vim deploy-cc.sh
И добавьте в него следующие строки:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 443, host: 8443
config.vm.network :private_network, ip: "192.168.11.11"
config.vm.hostname = "cc.local"
config.vm.provision "shell" do |s|
s.inline = "yum install -y vim wget"
end
config.vm.provision "shell", path: "deploy-cc.sh"
config.vm.provider :virtualbox do |vb|
vb.customize [
"modifyvm", :id,
"--memory", "4096",
]
end
end
Теперь мы готовы запустить нашу первую виртуальную машину. Состояние виртуальной машины можно проверить с помощью следующей команды:
$ vagrant status
Для создания и запуска виртуальной машины, выполните следующую команду:
$ vagrant up
На экране должно появиться много строк, говорящих о том, что Vagrant подготавливает виртуальную машину. Дождитесь завершения этого процесса. После завершения вы можете получить доступ к пользовательскому интерфейсу ClusterControl по адресу http://127.0.0.1:8080/ или https://127.0.0.1:8443/. Порт 8080 предназначен для HTTP-соединения, а 8443 — для HTTPS, как определено в Vagrantfile для forwarded_port.Развертывание кластера баз данных Теперь у нас есть ClusterControl, готовый к управлению и мониторингу нашим кластером. С помощью Vagrant очень легко создать несколько виртуальных машин. В этом примере мы развернем Galera Cluster из трех узлов, работающий на Percona XtraDB Cluster 8.0, как показано на диаграмме ниже:
Кластер состоит из трех узлов баз данных и двух узлов ProxySQL для балансировки нагрузки MySQL. Весь этот набор можно рассматривать как одну группу узлов данного кластера. Поэтому определим спецификацию этих виртуальных машин в одном Vagrantfile. Сначала создайте каталог для нашего кластера баз данных:
$ mkdir ~/vagrant/clustercontrol/percona-xtradb-cluster-80/
$ cd ~/vagrant/clustercontrol/percona-xtradb-cluster-80/
Затем создайте Vagrantfile.
$ vim ~/vagrant/clustercontrol/percona-xtradb-cluster-80/Vagrantfile
И добавьте в него следующие строки:
nodes = [
{ :hostname => 'db1', :ip => '192.168.11.21', :ram => 1024, :guestport => 3306, :hostport => 13306 },
{ :hostname => 'db2', :ip => '192.168.11.22', :ram => 1024, :guestport => 3306, :hostport => 23306 },
{ :hostname => 'db3', :ip => '192.168.11.23', :ram => 1024, :guestport => 3306, :hostport => 33306 },
{ :hostname => 'proxy1', :ip => '192.168.11.26', :ram => 512, :guestport => 6033, :hostport => 16033 },
{ :hostname => 'proxy2', :ip => '192.168.11.27', :ram => 512, :guestport => 6033, :hostport => 26033 }
]
Vagrant.configure("2") do |config|
nodes.each do |node|
config.vm.define node[:hostname] do |nodeconfig|
nodeconfig.vm.box = 'centos/7'
nodeconfig.vm.hostname = node[:hostname] + ".local"
nodeconfig.vm.network :private_network, ip: node[:ip]
nodeconfig.vm.network "forwarded_port", guest: node[:guestport], host: node[:hostport]
memory = node[:ram] ? node[:ram] : 512;
nodeconfig.vm.provider :virtualbox do |vb|
vb.customize [ "modifyvm", :id, "--memory", memory.to_s ]
vb.customize [ "modifyvm", :id, "--audio", "none" ]
end
nodeconfig.vm.provision "shell" do |s|
s.inline = "yum install -y wget vim"
end
end
end
(1..3).each do |i|
config.vm.define "db#{i}" do |dbnode|
dbnode.vm.provision "shell", path: "authorize.sh"
end
end
(1..2).each do |i|
config.vm.define "proxy#{i}" do |dbnode|
dbnode.vm.provision "shell", path: "authorize.sh"
end
end
end
В том же каталоге создайте скрипт authorize.sh и добавьте в него следующее содержимое:
CC_IP=192.168.11.11
curl -s http://${CC_IP}/cc.pub >> /home/vagrant/.ssh/authorized_keys
Данный скрипт скачивает открытый ключ с сервера ClusterControl, созданный в deploy-cc.sh и сохраняет его в списке авторизованных ключей для пользователя vagrant. Это нужно для использования SSH без пароля, что является обязательным для узлов, управляемых ClusterControl.Для создания и запуска виртуальных машин кластера выполните следующую команду:
$ vagrant up
Подождите, пока все виртуальные машины запустятся. Их статус можно проверить с помощью команды vagrant status:
$ vagrant status
Теперь пришло время развернуть Percona XtraDB Cluster, используя ClusterControl. Откройте ClusterControl по адресу http://127.0.0.1:8080/clustercontrol, перейдите в Deploy -> MySQL Galera и введите следующие данные:
В качестве пользователя SSH (SSH User) указываем vagrant, так как мы авторизовали его открытый ключ в списке authorized_keys на каждом из узлов при провижининге виртуальных машин с помощью Vagrant через authorize.sh.Обратите внимание, что у всех виртуальных машин есть как минимум два сетевых интерфейса. Vagrant при работе с VirtualBox требует, чтобы первое сетевое устройство, подключенное к виртуальной машине, было устройством NAT. Данное NAT-устройство используется для перенаправления портов. И именно через этот механизм Vagrant получает SSH-доступ к виртуальной машине. Наш IP-адрес, определенный в Vagrantfile, будет использоваться на интерфейсах eth1, eth2 и т.д., что важно при их настройке на странице "Define MySQL Servers", показанной ниже:
При указании IP-адреса на втором шаге используйте IP-адрес, который мы указали в Vagrantfile (эквивалентен IP-адресу eth1 созданной виртуальной машины). Зеленая галочка рядом с IP-адресом указывает на то, что данный узел доступен через беспарольный SSH с сервера ClusterControl. Наконец, нажмите "Deploy" и дождитесь завершения развертывания. После завершения вы должны увидеть следующее:
Развертывание балансировщиков нагрузкиПохожим образом готовим виртуальные машины для балансировщиков нагрузки с соответствующими IP-адресами и беспарольным SSH. Для развертывания ProxySQL перейдите в ClusterControl -> Manage -> Load Balancers -> ProxySQL -> Deploy ProxySQL и укажите первый балансировщик (192.168.11.26), как показано ниже:
Не забудьте включить "Use Native Clustering", так как у нас будет несколько хостов ProxySQL. Для начала развертывания нажмите кнопку "Deploy ProxySQL". За ходом выполнения задания можно следить в ClusterControl -> Activity -> Jobs. Повторите вышеуказанные шаги для второго балансировщика (192.168.11.27). После этого мы можем связать эти балансировщики с виртуальным IP-адресом (плавающий IP-адрес для единой конечной точки) с помощью Keepalived, перейдя в ClusterControl -> Manage -> Load Balancers -> Keepalived -> Deploy Keepalived и выбрав оба балансировщика нагрузки с виртуальным IP-адресом (192.168.11.20) на интерфейсе eth1, как показано ниже:
Мы развернули отказоустойчивый кластер баз данных, повторяющий продакшн-окружение.Остановить все узлы кластера можно одной командой:
$ cd ~/vagrant/clustercontrol/percona-xtradb-cluster-80
$ vagrant halt
Для остановки виртуальной машины с ClusterControl перейдите в каталог ClusterControl и выполните такую же команду:
$ cd ~/vagrant/clustercontrol
$ vagrant halt
Для удаления виртуальных машин замените команду vagrant halt на vagrant destroy. Позже вы всегда сможете воссоздать их с помощью команды vagrant up.
Перевод статьи подготовлен в преддверии старта курса «Базы данных».Также приглашаем всех желающих посетить бесплатный демо-урок по теме: «MySQL NDB Cluster — шардинг».
===========
Источник:
habr.com
===========
===========
Автор оригинала: Ashraf Sharif
===========Похожие новости:
- [IT-инфраструктура, Администрирование баз данных, Big Data, Софт] Вот это скорость! Как мы подружили наш UBA-модуль с ClickHouse и что из этого вышло
- [PostgreSQL] Postgresso 28
- [MySQL, Администрирование баз данных] Оптимизация mysql комплексная
- [SQL, Администрирование баз данных, Хранение данных] Тысяча и один справочник в Master Data Management Ростелекома
- [Высокая производительность, PostgreSQL, SQL, Администрирование баз данных] Агрегаты в БД — эффективная обработка потока «фактов»
- [IT-инфраструктура, Виртуализация, Microsoft SQL Server, Администрирование баз данных] Как мы разгоняли кластер для нагруженных баз Microsoft SQL и получали заветные 200 000 IOPS
- [Разработка под iOS, Разработка мобильных приложений, Администрирование баз данных, Swift] Быстрый, простой, сложный: как мы выпилили Realm
- [PostgreSQL, SQL, Администрирование баз данных] Расширение кластера PostgreSQL размером 5,7 ТБ и переход с версии 9.6 на 12.4 (перевод)
- [Open source, Администрирование баз данных, Big Data, Data Engineering] EventNative – простой инструмент для записи потока событий в ClickHouse (перевод)
- [Администрирование баз данных, Big Data, Data Engineering] Аналитический движок Amazon Redshift + преимущества Облака
Теги для поиска: #_mysql, #_administrirovanie_baz_dannyh (Администрирование баз данных), #_bazy_dannyh (базы данных), #_mysql, #_ndb, #_blog_kompanii_otus (
Блог компании OTUS
), #_mysql, #_administrirovanie_baz_dannyh (
Администрирование баз данных
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Если вы работаете с большим количеством виртуальных машин, то Vagrant, вероятно, будет лучшим инструментом для их создания, автоматизации и управления, повышая эффективность и производительность развертывания (особенно для dev-окружений). ClusterControl также может быть развернут через Vagrant.Vagrant поддерживает различные платформы виртуализации: VirtualBox, KVM, Hyper-V, контейнеры Docker, VMware и AWS. Мы в качестве провайдера виртуальных машин будем использовать VirtualBox, а для их провижининга — Vagrant.Скачать VirtualBox можно отсюда, а Vagrant отсюда. Установите их и можете двигаться дальше.Развертывание ClusterControl через VagrantДля развертывания виртуальной машины с ClusterControl создайте следующие файлы:
$ mkdir ~/vagrant/clustercontrol
$ cd ~/vagrant/clustercontrol $ vim Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "forwarded_port", guest: 443, host: 8443 config.vm.network :private_network, ip: "192.168.11.11" config.vm.hostname = "cc.local" config.vm.provision "shell" do |s| s.inline = "yum install -y vim wget" end config.vm.provision "shell", path: "deploy-cc.sh" config.vm.provider :virtualbox do |vb| vb.customize [ "modifyvm", :id, "--memory", "4096", ] end end $ vim deploy-cc.sh
Vagrant.configure("2") do |config|
config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "forwarded_port", guest: 443, host: 8443 config.vm.network :private_network, ip: "192.168.11.11" config.vm.hostname = "cc.local" config.vm.provision "shell" do |s| s.inline = "yum install -y vim wget" end config.vm.provision "shell", path: "deploy-cc.sh" config.vm.provider :virtualbox do |vb| vb.customize [ "modifyvm", :id, "--memory", "4096", ] end end $ vagrant status
$ vagrant up
Кластер состоит из трех узлов баз данных и двух узлов ProxySQL для балансировки нагрузки MySQL. Весь этот набор можно рассматривать как одну группу узлов данного кластера. Поэтому определим спецификацию этих виртуальных машин в одном Vagrantfile. Сначала создайте каталог для нашего кластера баз данных: $ mkdir ~/vagrant/clustercontrol/percona-xtradb-cluster-80/
$ cd ~/vagrant/clustercontrol/percona-xtradb-cluster-80/ $ vim ~/vagrant/clustercontrol/percona-xtradb-cluster-80/Vagrantfile
nodes = [
{ :hostname => 'db1', :ip => '192.168.11.21', :ram => 1024, :guestport => 3306, :hostport => 13306 }, { :hostname => 'db2', :ip => '192.168.11.22', :ram => 1024, :guestport => 3306, :hostport => 23306 }, { :hostname => 'db3', :ip => '192.168.11.23', :ram => 1024, :guestport => 3306, :hostport => 33306 }, { :hostname => 'proxy1', :ip => '192.168.11.26', :ram => 512, :guestport => 6033, :hostport => 16033 }, { :hostname => 'proxy2', :ip => '192.168.11.27', :ram => 512, :guestport => 6033, :hostport => 26033 } ] Vagrant.configure("2") do |config| nodes.each do |node| config.vm.define node[:hostname] do |nodeconfig| nodeconfig.vm.box = 'centos/7' nodeconfig.vm.hostname = node[:hostname] + ".local" nodeconfig.vm.network :private_network, ip: node[:ip] nodeconfig.vm.network "forwarded_port", guest: node[:guestport], host: node[:hostport] memory = node[:ram] ? node[:ram] : 512; nodeconfig.vm.provider :virtualbox do |vb| vb.customize [ "modifyvm", :id, "--memory", memory.to_s ] vb.customize [ "modifyvm", :id, "--audio", "none" ] end nodeconfig.vm.provision "shell" do |s| s.inline = "yum install -y wget vim" end end end (1..3).each do |i| config.vm.define "db#{i}" do |dbnode| dbnode.vm.provision "shell", path: "authorize.sh" end end (1..2).each do |i| config.vm.define "proxy#{i}" do |dbnode| dbnode.vm.provision "shell", path: "authorize.sh" end end end CC_IP=192.168.11.11
curl -s http://${CC_IP}/cc.pub >> /home/vagrant/.ssh/authorized_keys $ vagrant up
$ vagrant status
В качестве пользователя SSH (SSH User) указываем vagrant, так как мы авторизовали его открытый ключ в списке authorized_keys на каждом из узлов при провижининге виртуальных машин с помощью Vagrant через authorize.sh.Обратите внимание, что у всех виртуальных машин есть как минимум два сетевых интерфейса. Vagrant при работе с VirtualBox требует, чтобы первое сетевое устройство, подключенное к виртуальной машине, было устройством NAT. Данное NAT-устройство используется для перенаправления портов. И именно через этот механизм Vagrant получает SSH-доступ к виртуальной машине. Наш IP-адрес, определенный в Vagrantfile, будет использоваться на интерфейсах eth1, eth2 и т.д., что важно при их настройке на странице "Define MySQL Servers", показанной ниже: При указании IP-адреса на втором шаге используйте IP-адрес, который мы указали в Vagrantfile (эквивалентен IP-адресу eth1 созданной виртуальной машины). Зеленая галочка рядом с IP-адресом указывает на то, что данный узел доступен через беспарольный SSH с сервера ClusterControl. Наконец, нажмите "Deploy" и дождитесь завершения развертывания. После завершения вы должны увидеть следующее: Развертывание балансировщиков нагрузкиПохожим образом готовим виртуальные машины для балансировщиков нагрузки с соответствующими IP-адресами и беспарольным SSH. Для развертывания ProxySQL перейдите в ClusterControl -> Manage -> Load Balancers -> ProxySQL -> Deploy ProxySQL и укажите первый балансировщик (192.168.11.26), как показано ниже: Не забудьте включить "Use Native Clustering", так как у нас будет несколько хостов ProxySQL. Для начала развертывания нажмите кнопку "Deploy ProxySQL". За ходом выполнения задания можно следить в ClusterControl -> Activity -> Jobs. Повторите вышеуказанные шаги для второго балансировщика (192.168.11.27). После этого мы можем связать эти балансировщики с виртуальным IP-адресом (плавающий IP-адрес для единой конечной точки) с помощью Keepalived, перейдя в ClusterControl -> Manage -> Load Balancers -> Keepalived -> Deploy Keepalived и выбрав оба балансировщика нагрузки с виртуальным IP-адресом (192.168.11.20) на интерфейсе eth1, как показано ниже: Мы развернули отказоустойчивый кластер баз данных, повторяющий продакшн-окружение.Остановить все узлы кластера можно одной командой: $ cd ~/vagrant/clustercontrol/percona-xtradb-cluster-80
$ vagrant halt $ cd ~/vagrant/clustercontrol
$ vagrant halt Перевод статьи подготовлен в преддверии старта курса «Базы данных».Также приглашаем всех желающих посетить бесплатный демо-урок по теме: «MySQL NDB Cluster — шардинг».
=========== Источник: habr.com =========== =========== Автор оригинала: Ashraf Sharif ===========Похожие новости:
Блог компании OTUS ), #_mysql, #_administrirovanie_baz_dannyh ( Администрирование баз данных ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:16
Часовой пояс: UTC + 5