Рубрики
Uncategorized

Создание кластера виртуальных машин с несколькими узлами Vagrant

Автор оригинала: David Wong.

I. Предисловие

При разработке программного обеспечения большая часть рабочей среды программы-это ее собственный компьютер, операционная система Windows, MAC или Linux, которая может хорошо запускать программное обеспечение большую часть времени. Однако существует множество распределенных приложений, которые не могут быть хорошо смоделированы локально. В приложениях такого рода несколько узлов образуют кластер в производственной среде, и каждый узел развертывается на другой машине. Как правило, мы не покупаем несколько хостов для развертывания частного облака для имитации кластера, что слишком дорого. Поэтому я думаю, что использование виртуальной машины является наиболее экономичным выбором, а комбинация vagrant + virtualbox-наиболее удобной.

2, Создание виртуальных машин с одной машиной

1. Скачайте и установите vagrant + virtualbox

1. Ссылка для скачивания бродяги https://www.vagrantup.com/downloads.html 2. Ссылка для загрузки virtualbox https://www.virtualbox.org/wiki/Downloads После загрузки и установки запустите команду на терминале vagrant-v , появится приглашение , аналогичное следующему, указывающее, что установка прошла успешно.

Vagrant 2.2.3

2. установите Коробку

Концепция box в vagrant эквивалентна операционной системе. Перед использованием vagrant для создания виртуальной машины нам необходимо добавить системный пакет для vagrant. Мы можем найти различные версии операционной системы на официальном веб-сайте vagrant cloud Ubuntu 16.04 LTS Например, версия операционной системы называется ubuntu/xenial64 Box.

2.1 режим установки I

Мы можем добавить поле напрямую, выполнив следующую команду. После выполнения команды vagrant загрузит соответствующее поле с удаленного склада

~ vagrant box add ubuntu/xenial64

2.2 режим установки II

Хотя описанные выше шаги кажутся нормальными, в процессе фактической реализации Box Скорость загрузки настолько низкая, что для ее завершения может потребоваться несколько дней, поэтому нам необходимо изменить режим установки здесь.

1. Сначала выполните следующую команду
~ vagrant box add ubuntu/xenial64 
2. После завершения операции терминал выводит следующую информацию
~ vagrant box add ubuntu/xenial64
/opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/util/which.rb:37: warning: Insecure world writable dir /Users/meetmax/test in PATH, mode 040777
==> box: Loading metadata for box 'ubuntu/xenial64'
    box: URL: https://vagrantcloud.com/ubuntu/xenial64
==> box: Adding box 'ubuntu/xenial64' (v20190724.1.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/ubuntu/boxes/xenial64/versions/20190724.1.0/providers/virtualbox.box

Далее, Ctrl + C Команда прерывания, Загрузка Следующая ссылка-это ссылка для загрузки. После копирования ссылки вы можете вставить ее непосредственно в браузер или thunderbolt, чтобы загрузить ее. В реальном тесте скорость будет намного выше, и вы сможете загрузить его за несколько минут.

3. После загрузки выполните следующую команду, чтобы добавить локальное поле
~ vagrant box add /your/path/virtualbox.box --name YourBoxName

Среди них virtualbox.box Путь изменен на собственный локальный путь, --имя За ним следует название коробки, которое можно назвать самостоятельно. Обычно это может соответствовать официальному названию, то есть ubuntu/xenial 64

2.3 проверка

После завершения установки выполните следующую команду, чтобы проверить успешность установки

~ vagrant box list

Терминал выведет информацию, аналогичную следующей

laravel/homestead (virtualbox, 5.1.0)
ubuntu/xenial64   (virtualbox, 0)

Проверьте, есть ли у вас только что установленная коробка.

3. Инициализируйте бродягу

После установки коробки выполните следующую команду для инициализации бродяги

~ mkdir vagrant_test
~ cd vagrant_test
~ vagrant init ubuntu/xenial64

После завершения операции vagrant_test Появится файл Vagrantfile , терминал выведет информацию, аналогичную следующей.

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Файл vagrantfile содержит информацию о конфигурации, относящуюся к виртуальной машине. Здесь мы сначала используем конфигурацию по умолчанию и временно игнорируем ее.

4. Запустите виртуальную машину и войдите в систему SSH

4.1 сборка и запуск виртуальной машины

После инициализации vagrant_test Выполните следующую команду в каталоге для сборки и запуска виртуальной машины

~ vagrant up

Запуск завершен успешно после появления сообщения, аналогичного следующему

==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 5.1.38
    default: VirtualBox Version: 6.0
==> default: Mounting shared folders...
    default: /vagrant => /Users/meetmax/vagrant/vagrant_test

4.2 Вход по SSH

Использование SSH в vagrant очень просто vagrant_test Выполните следующую команду в каталоге

~ vagrant ssh

После успеха я вошел в виртуальную машину

3, Построение виртуального кластера с несколькими узлами

Выше используется режим одной машины vagrant, и vagrant также поддерживает режим нескольких машин, то есть одна конфигурация запускает несколько виртуальных машин, которые могут легко имитировать среду кластера серверов. Разница между режимом кластера и автономным режимом заключается только в том, что файл конфигурации vagrantfile отличается. В vagrantfile мы создаем несколько виртуальных машин путем зацикливания.

1. инициализируйте Бродягу

Выполните следующую команду для инициализации файла конфигурации кластера

~ mkdir vagrant_cluster
~ cd vagrant_cluster
~ vagrant init ubuntu/xenial64

2. Измените файл vagrantfile

При создании кластера виртуальных машин нам необходимо соответствующим образом изменить файл vagrantfile. Файл конфигурации выглядит следующим образом.

Vagrant.configure("2") do |config|
   (1..4).each do |i|
      
      #Define node variables
      config.vm.define "node#{i}" do |node|
     
      Box configuration
      node.vm.box = "ubuntu/xenial64"

      #Set the host name of the virtual machine
      node.vm.hostname = "node#{i}"

      #Set IP of virtual machine
      node.vm.network "private_network", ip: "192.168.60.#{10+i}"

      #Set the shared directory between the host and the virtual machine
      node.vm.synced_folder "/Users/meetmax", "/home/vagrant/code"
      #Virtaulbox related configuration
      node.vm.provider "virtualbox" do |v|

          #Set the name of the virtual machine
          v.name = "node#{i}"

          #Set the memory size of the virtual machine
          v.memory = 2048

          #Set the number of CPUs of the virtual machine
          v.cpus = 1
      end
  end
end
end

Для получения информации о конкретной конфигурации виртуальной машины, пожалуйста, обратитесь к примечанию в файле. В отличие от создания одной виртуальной машины, создание кластера осуществляется с помощью (1..4).каждый Четыре узла виртуальной машины создаются в цикле.

3. Создайте и запустите кластер виртуальных машин

Команда “Запустить кластер” такая же, как и общая команда. Выполнение следующей команды запустит все узлы виртуальной машины

~ vagrant up

Чтобы запустить один узел, выполните следующую команду

~ vagrant up node1

Среди них node1 Это имя узла. Запустите несколько виртуальных машин

~ vagrant up node1 node2

4. Вход по SSH

Войдите в один узел виртуальной машины

~ vagrant ssh node1

4. Общие команды управления виртуальной машиной

  • Запустите виртуальную машину: vagrant up
  • Вход в виртуальную машину: бродячий SSH
  • Перезагрузите виртуальную машину: перезагрузка бродяги
  • Выключение виртуальной машины: остановка бродяги
  • Уничтожить виртуальную машину: бродяга уничтожит

резюме

В случае ограниченных ресурсов кластер виртуальных машин с несколькими узлами может помочь нам смоделировать распределенную среду и провести различные тесты на виртуальной машине. Даже если система повреждена, ее легко восстановить. Каждый узел виртуальной машины изолирован и не имеет нагрузки. Я надеюсь, что все вышесказанное поможет вам!