Multipass — это инструмент для создания облачных виртуальных машин Ubuntu на Linux, macOS и Windows.
Установите Multipass
Метод установки Multipass отличается в зависимости от платформы
- Как установить Multipass на Linux
- Как установить Multipass на macOS
- Как установить Multipass на Windows
2. Подготовьте YAML-файл Cloud-init docker-cloud-config.yaml:
```yaml
apt: sources: docker.list: source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
packages: - apt-transport-https - ca-certificates - curl - gnupg-agent - software-properties-common - docker-ce - docker-ce-cli - containerd.io
write_files: - path: /etc/sysctl.d/enabled_ipv4_forwarding.conf content: | net.ipv4.conf.all.forwarding=1
groups: - docker
system_info: default_user: groups: [docker] ``` чтобы упростить установку Docker Engine при запуске новой ВМ.
В Linux файл docker-cloud-config.yaml должен располагаться в домашнем каталоге пользователя, чтобы он был
доступен приложению Multipass Snap.
Создайте и запустите новую ВМ с установленным Docker Engine для каждого узла (например):
console
$ multipass launch -n arc-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml
Launched: arc-node
console
$ multipass launch -n db-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml
Launched: db-node
console
$ multipass launch -n elk-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml
Launched: elk-node
где
-d 10G — выделение 10 ГБ дискового пространства для создаваемой ВМ (по умолчанию: 5G) -m 4G — выделение 4 ГБ памяти для создаваемой ВМ (по умолчанию: 1G)См.
```console
$ multipass launch -h
Usage: multipass launch [options] [[
Options:
-h, --help Displays help on commandline options
-v, --verbose Increase logging verbosity. Repeat the
'v' in the short option for more detail.
Maximum verbosity is obtained with 4 (or
more) v's, i.e. -vvvv.
-c, --cpus multipass set
local.bridged-network.
mode: auto|manual (default: auto)
mac: hardware address (default:
random).
You can also use a shortcut of "--network bridged network.
--mount
Arguments:
image Optional image to launch. If omitted,
then the default Ubuntu LTS will be
used.
для просмотра всех доступных опций.
4. Выведите список созданных экземпляров и добавьте записи в ваш DNS или файл hosts:console
$ multipass list
Name State IPv4 Image
arc-node Running 10.109.53.4 Ubuntu 20.04 LTS
172.19.0.1
172.17.0.1
db-node Running 10.109.53.75 Ubuntu 20.04 LTS
172.17.0.1
172.19.0.1
elk-node Running 10.109.53.139 Ubuntu 20.04 LTS
172.19.0.1
172.17.0.1
console
$ sudo -i
# cat >> /etc/hosts << EOF
10.109.53.4 arc-node
10.109.53.75 db-node
10.109.53.139 elk-node
EOF
# exit
logout
``
5. Перенесите специфичные для узлов скрипты конфигурации (например,
[init-arc-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-arc-node.sh),
[init-db-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-db-node.sh),
[init-elk-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-elk-node.sh),
[docker-compose.yml`](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/docker-compose.yml),
на созданные ВМ (например):
console
$ multipass transfer init-arc-node.sh docker-compose.yml docker-compose.env arc-node:
console
$ multipass transfer init-db-node.sh db-node:
console
$ multipass transfer init-elk-node.sh elk-node:
6. Откройте командную оболочку в каждом экземпляре и запустите специфичный для узла скрипт инициализации от имени root:
console
$ multipass shell arc-node
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64)
...
ubuntu@arc-node$ sudo bash -v ~ubuntu/init-arc-node.sh
...
console
$ multipass shell db-node
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64)
...
ubuntu@db-node$ sudo bash -v ~ubuntu/init-db-node.sh
...
console
$ multipass shell elk-node
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64)
...
ubuntu@elk-node$ sudo bash -v ~ubuntu/init-elk-node.sh
...
7. Инициализируйте Docker Swarm в командной оболочке узла, выступающего в роли менеджера swarm:
```console
ubuntu@arc-node:~$ docker swarm init
Swarm initialized: current node (reney80x2dbg82aqh5b5130zc) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
и добавьте остальные узлы в swarm как worker, выполнив указанную выше команду в их командных оболочках:console
ubuntu@db-node:~$ docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377
This node joined a swarm as a worker.
console
ubuntu@elk-node:~$ docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377
This node joined a swarm as a worker.
8. Теперь вы готовы создавать сервисы по отдельности или разворачивать стеки сервисов на узле, выступающем в роли менеджера swarm (например):console
ubuntu@arc-node:~$ docker stack deploy -c docker-compose.yml dcm4che
Creating network dcm4che_default
Creating service dcm4che_arc
Creating service dcm4che_elasticsearch
Creating service dcm4che_kibana
Creating service dcm4che_logstash
Creating service dcm4che_ldap
Creating service dcm4che_keycloak
Creating service dcm4che_oauth2-proxy
Creating service dcm4che_db
9. Вы можете останавливать и перезапускать созданные ВМ, например:console
$ multipass stop arc-node db-node elk-node
console
$ multipass start arc-node db-node elk-node
10. Вы можете удалить и окончательно очистить созданные ВМ, например:console
$ multipass delete -p arc-node db-node elk-node
```