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
- Перезагрузите виртуальную машину: перезагрузка бродяги
- Выключение виртуальной машины: остановка бродяги
- Уничтожить виртуальную машину: бродяга уничтожит
резюме
В случае ограниченных ресурсов кластер виртуальных машин с несколькими узлами может помочь нам смоделировать распределенную среду и провести различные тесты на виртуальной машине. Даже если система повреждена, ее легко восстановить. Каждый узел виртуальной машины изолирован и не имеет нагрузки. Я надеюсь, что все вышесказанное поможет вам!