Ручной запуск инсталлятора
Установите компоненты Платформы в следующем порядке:
Чтобы установить Base, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s base \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Base:
-
Подключитесь к любому узлу, кроме деплой-ноды, например, к управляющему:
ssh cpn003. -
Проверьте синхронизацию времени:
chronyc sources.Пример ожидаемого результатаMS Name/IP address Stratum Poll Reach LastRx Last sample===============================================================================^* 10.235.100.1 3 10 377 962 +95us[ +132us] +/- 25ms -
Проверьте установку сервиса Consul:
$ consul catalog servicesПример ожидаемого результатаbarbicanconsuldashboard-metrics-scraper-kubernetes-dashboardelkhaproxykafka-elkkube-dns-kube-systemkube-dns-upstream-kube-systemkube-state-metrics-kube-systemkubelet-cadvisor-metricskubernetes-dashboard-headless-kubernetes-dashboardkubernetes-dashboard-kubernetes-dashboardkubernetes-defaulttrove-rabbit-persistent -
Подключитесь к любому управляющему узлу:
ssh cpn003. -
Проверьте статус Public HAProxy:
$ systemctl status public_haproxy.serviceПример ожидаемого результатаpublic_haproxy.service - HAProxy Load BalancerLoaded: loaded (/etc/systemd/system/public_haproxy.service; enabled; vendor preset: disa>Drop-In: /etc/systemd/system/public_haproxy.service.d└─limits.confActive: active (running) since Fri 2023-10-27 18:24:20 MSK; 5h 3min ago... -
Проверьте статус Private HAProxy:
$ systemctl status private_haproxy.serviceПример ожидаемого результатаprivate_haproxy.service - HAProxy Load BalancerLoaded: loaded (/etc/systemd/system/private_haproxy.service; enabled; vendor preset: dis>Drop-In: /etc/systemd/system/private_haproxy.service.d└─limits.confActive: active (running) since Fri 2023-10-27 18:34:48 MSK; 4h 53min ago... -
Подключитесь к RS-серверу:
ssh rs1. -
Проверьте статус сервиса gobgpd:
$ systemctl status gobgpdПример ожидаемого результатаgobgpd.service - GoBGP Routing DaemonLoaded: loaded (/usr/lib/systemd/system/gobgpd.service; enabled; vendor preset: disabled)Active: active (running) since Fri 2023-10-27 18:35:27 MSK; 4h 52min ago... -
Проверьте работу сервиса gobgp:
$ gobgp neighborПример ожидаемого результатаPeer AS Up/Down State |#Received Accepted10.30.3.12 65433 04:45:00 Establ | 3 310.30.3.11 65433 04:44:37 Establ | 3 310.30.3.13 65433 04:42:05 Establ | 3 310.30.3.112 65433 04:53:49 Establ | 6 610.30.3.111 65433 04:53:41 Establ | 6 610.30.3.113 65433 04:53:28 Establ | 6 610.30.3.22 65431 04:54:13 Establ | 19 19 -
Подключитесь к управляющему узлу:
ssh cpn003. -
Проверьте конфигурационный файл Kubernetes:
$ sudo kubectl config viewПример ожидаемого результатаapiVersion: v1clusters:- cluster:certificate-authority: /etc/kubernetes/pki/ca.crtserver: https://internal.private.infra.devmail.ru:6443name: kubecontexts:- context:cluster: kubeuser: adminname: defaultcurrent-context: defaultkind: Configpreferences: {}users:- name: adminuser:client-certificate: /etc/kubernetes/pki/admin.crtclient-key: /etc/kubernetes/pki/admin.key -
Выведите все поды Kubernetes:
$ sudo kubectl get pods -AПример ожидаемого результата (все сервисы в статусе Running и в Ready "1/1")NAMESPACE NAME READY STATUS RESTARTS AGEdefault consul-sync-catalog-7c996b7f65-kkz2l 1/1 Running 0 4h46mkube-system calico-kube-controllers-dbdc4b86-drczd 1/1 Running 0 4h47mkube-system calico-node-2xpqt 1/1 Running 0 4h47mkube-system calico-node-ffzn4 1/1 Running 0 4h47m... -
Подключитесь к Logging или Monitoring-серверу:
ssh lm001. -
Проверьте контейнеры OpenSearch:
$ sudo docker ps --format {{.Names}}Пример ожидаемого результатаopensearch_dashboardsopensearch -
Проверьте статус сервиса Apache Kafka на подключенном сервере:
$ systemctl status kafka-<ИМЯ_СЕРВЕРА>Пример ожидаемого результатаkafka-lm001.service - Apache Kafka server kafka-lm001Loaded: loaded (/usr/lib/systemd/system/kafka-lm001.service; enabled; vendor preset: disabled)Active: active (running) since Fri 2023-10-27 18:54:43 MSK; 4h 39min ago... -
Выведете список групп читателей в Apache Kafka:
$ /srv/kafka/kafka-<ИМЯ_СЕРВЕРА>/kafka_2.13-2.6.0/bin/kafka-consumer-groups.sh --bootstrap-server <АДРЕС_СЕРВЕРА_В_MANAGEMENT_СЕТИ>:9092 --listПример ожидаемого результатаlogstash_kube_mainlogstash_proxysqllogstash_haproxylogstash_postgreslogstash_linux_systemlogstash_libvirtdlogstash_auditlogstash_dmesglogstash_iamlogstash_clickhouselogstash_openstack_main -
Проверьте статус сервиса Logstash:
$ systemctl status logstash-<ИМЯ_СЕРВЕРА>Пример ожидаемого результатаlogstash-lm001.service - Logstash node logstash-lm001Loaded: loaded (/usr/lib/systemd/system/logstash-lm001.service; enabled; vendor preset: disabled)Active: active (running) since Fri 2023-10-27 19:02:50 MSK; 4h 38min ago... -
Проверьте статус сервиса Logstash:
$ curl localhost:9600/?prettyПример ожидаемого результата{"host" : "lm001","version" : "7.10.2","http_address" : "127.0.0.1:9600","id" : "236b31eb-23d2-4c12-892e-fa7f2a1d1548","name" : "lm001","ephemeral_id" : "4f9a6bc6-e20c-4ff2-88da-6763ae0aa985","status" : "green","snapshot" : false,"pipeline" : {"workers" : 8,"batch_size" : 125,"batch_delay" : 50},"build_date" : "2021-01-13T02:43:06Z","build_sha" : "7cebafee7a073fa9d58c97de074064a540d6c317","build_snapshot" : false} -
Подключитесь к любому управляющему узлу:
ssh cpn003. -
Проверьте сервис Apache ZooKeeper:
$ sudo yum install netcat -y$ echo ruok | nc localhost 2181Пример ожидаемого результатаimok
Чтобы установить Ceph, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s ceph \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Ceph:
-
Подключитесь к узлу хранилищ:
ssh csn001 -
Проверьте статусы сервисов Ceph:
$ systemctl list-dependencies ceph.targetПример ожидаемого результатаceph.target● ├─ceph-crash.service● ├─ceph-mds.target● │ ├─ceph-mds@csn001.service● │ ├─ceph-mon.target● │ │ ├─ceph-mon@csn001.service│ │ └─...│ └─...● ├─ceph-mgr.target● │ ├─ceph-mgr@csn001.service● │ ├─ceph-mon.target● │ │ ├─ceph-mon@csn001.service│ │ └─...│ └─...● ├─ceph-mon.target● │ ├─ceph-mon@csn001.service│ └─...● └─ceph-osd.target● ├─ceph-osd@0.service● ├─ceph-osd@1.service● ├─ceph-mon.target● │ ├─ceph-mon@csn001.service│ └─...└─... -
Проверьте состояние Ceph:
$ ceph -sПример ожидаемого результатаcluster:id: d1ba1176-f6e1-4af7-8101-b4f51b8af55ehealth: HEALTH_WARNmon is allowing insecure global_id reclaim6 pool(s) have no replicas configuredservices:mon: 1 daemons, quorum csn001 (age 3m)mgr: csn001(active, since 67s)mds: cephfs:1 {0=csn001=up:active}osd: 2 osds: 2 up (since 2m), 2 in (since 2m)data:pools: 6 pools, 320 pgsobjects: 22 objects, 4.1 KiBusage: 2.0 GiB used, 698 GiB / 700 GiB availpgs: 320 active+cleanprogress:PG autoscaler decreasing pool 2 PGs from 128 to 32 (0s)[............................] -
Проверьте наличие пула
glance-images.-
Подключитесь к Storage-сервер:
ssh csn001. -
Выполните команду:
ceph osd pool ls.
Пример ожидаемого результатаglance-imagescinder-volumesvms... -
Чтобы установить Main, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s main \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Main:
-
Зайдите на управляющий узел:
ssh cpn003. -
Проверьте сервис
Memcached.-
Получите список подов сервиса Memcached:
$ sudo kubectl -n memcached-vkcloud get pods -o wide -
Из полученного списка выберите IP-адрес любого пода и получите по нему статистику сервиса Memcached:
$ echo stats | nc <ВЫБРАННЫЙ_IP_АДРЕС> 11211Пример ожидаемого результатаSTAT pid 1STAT uptime 11786STAT time 1698451709STAT version 1.5.17STAT libevent 2.1.8-stableSTAT pointer_size 64STAT rusage_user 0.880521STAT rusage_system 0.339415...
-
-
Проверьте БД.
-
Получите список всех БД:
$ systemctl | grep mariadb -
Подключитесь к любой БД из списка, используя его как путь к сокету:
$ sudo mysql -S /srv/mysql/nova/socket/nova.sock -u rootПример ожидаемого результатаWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 12896Server version: 10.2.43-MariaDB-log MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> -
Выведите состав кластера MariaDB:
MariaDB [(none)]> show databases;В ответ должен вернуться список БД.
Пример ожидаемого результата+--------------------+| Database |+--------------------+| information_schema || license_billing || mysql || nova || nova_api || nova_billing || nova_cell0 || performance_schema || placement || sys || test |+--------------------+11 rows in set (0.002 sec)Вернитесь в Bash с помощью комбинации
Ctrl+D. -
Проверьте статус прокси-сервера БД:
$ systemctl status proxysqlПример ожидаемого результатаproxysql.service - High Performance Advanced Proxy for MySQLLoaded: loaded (/etc/systemd/system/proxysql.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2023-10-28 00:58:16 MSK; 2h 15min ago
-
-
Проверьте сервис очередей RabbitMQ.
-
Проверьте количество готовых подов (столбец READY):
$ sudo kubectl -n rabbitmq get statefulsetПример ожидаемого результатаNAME READY AGErabbitmq-barbican 3/3 132mrabbitmq-billing-account-service 3/3 132mrabbitmq-ceilometer 3/3 132mrabbitmq-celery 3/3 132mrabbitmq-cinder 3/3 132mrabbitmq-gb 3/3 132mrabbitmq-katana 3/3 132mrabbitmq-magnum 3/3 132mrabbitmq-magnum-rapid 3/3 132mrabbitmq-neutron 3/3 132mrabbitmq-nova 3/3 132m -
Получите полный список подов RabbitMQ:
$ sudo kubectl -n rabbitmq get podsПример ожидаемого результатаNAME READY STATUS RESTARTS AGErabbitmq-barbican-0 1/1 Running 0 132mrabbitmq-barbican-1 1/1 Running 0 132mrabbitmq-barbican-2 1/1 Running 0 131mrabbitmq-billing-account-service-0 1/1 Running 0 132mrabbitmq-billing-account-service-1 1/1 Running 0 132mrabbitmq-billing-account-service-2 1/1 Running 0 131mrabbitmq-ceilometer-0 1/1 Running 0 132mrabbitmq-ceilometer-1 1/1 Running 0 132mrabbitmq-ceilometer-2 1/1 Running 0 131m... -
Из полученного списка выберите один из подов и получите по нему статистику:
$ sudo kubectl -n rabbitmq exec <ИМЯ ПОДА> -it -- rabbitmqctl cluster_statusПример ожидаемого результатаwarning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the --erlang-cookie switch instead.Cluster status of node rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kube ...BasicsCluster name: rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeDisk Nodesrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeRunning Nodesrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeVersionsrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8rabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8...
-
-
Проверьте сервис RABBIT_PERSISTENT (в случае установки компонента Trove):
$ sudo docker exec rabbit_persistent rabbitmqctl cluster_statusПример ожидаемого результатаCluster status of node rabbit@cpn003 ...BasicsCluster name: trove_rabbit_persistentDisk Nodesrabbit@cpn001rabbit@cpn002rabbit@cpn003Running Nodesrabbit@cpn001rabbit@cpn002rabbit@cpn003 -
Проверьте статус хранилища ETCD:
$ etcdctl --endpoints=localhost:22379 --write-out=table endpoint statusПример ожидаемого результата+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| localhost:22379 | 4c4ac234a21a8a2b | 3.5.0 | 20 kB | false | false | 2 | 4973 | 4973 | |+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ -
Проверьте сервис мониторинга Zabbix.
-
Подключитесь к узлу мониторинга:
ssh lm001. -
Проверьте состояние сервера Zabbix:
$ systemctl status zabbix-serverПример ожидаемого результатаzabbix-server.service - Zabbix ServerLoaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2023-10-28 01:09:37 MSK; 2h 12min ago
-
-
Проверьте службы Stolon-cluster:
-
Найдите управляющий узел, указанный в группе
vkcloud_stolon_clusterв файлеinventory/vkcloud/vkcloud.yml:$ less inventory/vkcloud/vkcloud.ymlПример ожидаемого результатаvkcloud_stolon_cluster:children:vkcloud_servicesmanager_stolon_cluster:hosts:postgres-servicesmanager-f1:ansible_host: cpn001postgres-servicesmanager-f2:ansible_host: cpn002postgres-servicesmanager-f3:ansible_host: cpn003postgresql_backup: true -
Подключитесь к узлу:
ssh cpn003. -
Получите список сервисов Stolon. Должен отобразиться сервис
stolon-consul-discovery, а также для всех баз должно быть по сервисуstolon-keeperиstolon-sentinel:$ systemctl | grep stolonПример ожидаемого результатаstolon-consul-discovery.service loaded active running Stolon Consul discoverystolon-keeper-postgres-billingcore-f3.service loaded active running Stolon billingcore-stolon-cluster keeperstolon-keeper-postgres-magnum-addons-f3.service loaded active running Stolon magnum-addons-stolon-cluster keeperstolon-keeper-postgres-magnum-rapid-f3.service loaded active running Stolon magnum-rapid-stolon-cluster keeperstolon-keeper-postgres-projectsservice-f3.service loaded active running Stolon projectsservice-stolon-cluster keeperstolon-keeper-postgres-servicesmanager-f3.service loaded active running Stolon servicesmanager-stolon-cluster keeperstolon-keeper-postgres-syncservice-f3.service loaded active running Stolon syncservice-stolon-cluster keeperstolon-keeper-postgres-xaas-f3.service loaded active running Stolon xaas-stolon-cluster keeperstolon-sentinel-postgres-billingcore-f3.service loaded active running Stolon billingcore-stolon-cluster sentinelstolon-sentinel-postgres-magnum-addons-f3.service loaded active running Stolon magnum-addons-stolon-cluster sentinelstolon-sentinel-postgres-magnum-rapid-f3.service loaded active running Stolon magnum-rapid-stolon-cluster sentinelstolon-sentinel-postgres-projectsservice-f3.service loaded active running Stolon projectsservice-stolon-cluster sentinelstolon-sentinel-postgres-servicesmanager-f3.service loaded active running Stolon servicesmanager-stolon-cluster sentinelstolon-sentinel-postgres-syncservice-f3.service loaded active running Stolon syncservice-stolon-cluster sentinelstolon-sentinel-postgres-xaas-f3.service loaded active running Stolon xaas-stolon-cluster sentinel
-
-
Проверьте состояние баз данных:
-
Подключитесь к управляющему узлу, указанному в группе
vkcloud_stolon_cluster:ssh cpn003. -
Получите список запущенных баз Postgres и их сокетов:
$ sudo netstat -tlpn | grep "postgres"Пример ожидаемого результатаtcp 0 0 10.30.3.13:5445 0.0.0.0:* LISTEN 1259286/postgrestcp 0 0 10.30.3.13:5446 0.0.0.0:* LISTEN 1573904/postgrestcp 0 0 10.30.3.13:5441 0.0.0.0:* LISTEN 1120222/postgrestcp 0 0 10.30.3.13:5440 0.0.0.0:* LISTEN 692470/postgrestcp 0 0 10.30.3.13:5442 0.0.0.0:* LISTEN 1411085/postgrestcp 0 0 10.30.3.13:5439 0.0.0.0:* LISTEN 976805/postgrestcp 0 0 10.30.3.13:5438 0.0.0.0:* LISTEN 825053/postgres -
Получите пароль
vault_postgresql_login_passwordиз файлаinventory/vkcloud/group_vars/vkcloud/vault(vault.yml). -
Подключитесь к любой из полученных баз:
$ psql -h 10.30.3.13 -p 5438 -U postgresПример ожидаемого результатаPassword for user postgres:psql (12.12)Type "help" for help.postgres=# -
Выведите список баз:
Пример ожидаемого результатаpostgres-# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges------------------+------------------+----------+-------------+-------------+-----------------------bank_integration | bank_integration | UTF8 | en_US.UTF-8 | en_US.UTF-8 |billingcore | billingcore | UTF8 | en_US.UTF-8 | en_US.UTF-8 |postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| | | | | postgres=CTc/postgrestemplate1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| | | | | postgres=CTc/postgres(5 rows)
-
-
Проверьте состояние stolon-кластеров:
-
Найдите управляющий узел, указанный в группе
vkcloud_stolon_clusterв файлеinventory/vkcloud/vkcloud.yml:$ less inventory/vkcloud/vkcloud.ymlПример ожидаемого результатаvkcloud_stolon_cluster:children:vkcloud_servicesmanager_stolon_cluster:hosts:postgres-servicesmanager-f1:ansible_host: cpn001postgres-servicesmanager-f2:ansible_host: cpn002postgres-servicesmanager-f3:ansible_host: cpn003postgresql_backup: true -
Подключитесь к узлу:
$ less ssh cpn003 -
Получите список кластеров:
# ls /etc/stolonПример ожидаемого результатаbillingcore-stolon-cluster magnum-rapid-stolon-cluster servicesmanager-stolon-cluster xaas-stolon-clustermagnum-addons-stolon-cluster projectsservice-stolon-cluster syncservice-stolon-cluster -
Получите состояние кластера:
# stolonctl status --cluster-name magnum-rapid-stolon-cluster --store-backend consul --store-endpoints http://127.0.0.1:8500Пример ожидаемого результата=== Active sentinels ===ID LEADER149b447f true8a286db6 falsecb16f008 false=== Active proxies ===No active proxies=== Keepers ===UID HEALTHY PG LISTENADDRESS PG HEALTHY PG WANTEDGENERATION PG CURRENTGENERATIONpostgres_magnum_rapid_f1 true 10.30.3.11:5442 true 3 3postgres_magnum_rapid_f2 true 10.30.3.12:5442 true 3 3postgres_magnum_rapid_f3 true 10.30.3.13:5442 true 9 9=== Cluster Info ===Master Keeper: postgres_magnum_rapid_f3===== Keepers/DB tree =====postgres_magnum_rapid_f3 (master)├─postgres_magnum_rapid_f2└─postgres_magnum_rapid_f1
-
-
После установки Redis:
-
Подключитесь к управляющему узлу из группы
vkcloud_redisи получите список доступных CLI:# ls /bin/redis/bin/redis-cli_maas-redis.sh /bin/redis-cli_magnumrapid-redis.sh -
Выберите любую доступную CLI и выполните команду:
# /bin/redis-cli_maas-redis.sh info replicationПример ожидаемого результатаWarning: Using a password with '-a' or '-u' option on the command line interface may not be safe.# Replicationrole:slavemaster_host:10.30.3.11master_port:6391master_link_status:upmaster_last_io_seconds_ago:0master_sync_in_progress:0slave_read_repl_offset:14010228slave_repl_offset:14010228slave_priority:100slave_read_only:1replica_announced:1connected_slaves:0master_failover_state:no-failovermaster_replid:90737554898a7391dcc4b7c6a1c15168ea06414fmaster_replid2:0000000000000000000000000000000000000000master_repl_offset:14010228second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:12961653repl_backlog_histlen:1048576
-
Чтобы установить IAM, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s iam \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки IAM:
-
Получите пароль из переменной
vault_keycloak_password, которая задана в файле~inventory/vkcloud/group_vars/vkcloud/vault.yml.$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_keycloak_password }}\n\n\"" all[0] | sed 's/\\n/\n/g' -
Подключитесь к управляющему узлу:
ssh cpn003. -
Подключитесь к поду Keycloak:
$ sudo kubectl -n keycloak-vkcloud exec vk-keycloak-0 -it -- bash$ /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin -
Введите пароль из переменной
vault_keycloak_password. -
Получите данные о состоянии сервера:
$ /opt/keycloak/bin/kcadm.sh get serverinfoПример ожидаемого результата{"systemInfo" : {"version" : "20.0.3-SNAPSHOT","serverTime" : "Sat Oct 28 14:56:36 MSK 2023","uptime" : "0 days, 11 hours, 20 minutes, 49 seconds","uptimeMillis" : 40849151,"javaVersion" : "11.0.17","javaVendor" : "RED SOFT","javaVm" : "OpenJDK 64-Bit Server VM","javaVmVersion" : "11.0.17+8-LTS","javaRuntime" : "OpenJDK Runtime Environment","javaHome" : "/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7.x86_64","osName" : "Linux","osArchitecture" : "amd64","osVersion" : "6.1.38-2.el7.3.x86_64","fileEncoding" : "UTF-8","userName" : "keycloak","userDir" : "/opt/keycloak","userTimezone" : "Europe/Moscow","userLocale" : "us_EN"},"memoryInfo" : {"total" : 402653184,"totalFormated" : "384 MB","used" : 106012432,"usedFormated" : "101 MB","free" : 296640752,"freePercentage" : 73,"freeFormated" : "282 MB"},..."resourceType" : [ "AUTHENTICATOR_CONFIG", "AUTHORIZATION_POLICY", "AUTHORIZATION_RESOURCE", "AUTHORIZATION_RESOURCE_SERVER", "AUTHORIZATION_SCOPE", "AUTH_EXECUTION", "AUTH_EXECUTION_FLOW", "AUTH_FLOW", "CLIENT", "CLIENT_INITIAL_ACCESS_MODEL", "CLIENT_ROLE", "CLIENT_ROLE_MAPPING", "CLIENT_SCOPE", "CLIENT_SCOPE_CLIENT_MAPPING", "CLIENT_SCOPE_MAPPING", "CLUSTER_NODE", "COMPONENT", "CUSTOM", "GROUP", "GROUP_MEMBERSHIP", "IDENTITY_PROVIDER", "IDENTITY_PROVIDER_MAPPER", "PROTOCOL_MAPPER", "REALM", "REALM_ROLE", "REALM_ROLE_MAPPING", "REALM_SCOPE_MAPPING", "REQUIRED_ACTION", "USER", "USER_FEDERATION_MAPPER", "USER_FEDERATION_PROVIDER", "USER_LOGIN_FAILURE", "USER_SESSION" ]}{ -
Подключитесь к управляющему узлу:
ssh cpn003. -
Проверьте статусы сервисов IAM:
-
Breeze:
$ echo 'box.info.status' | sudo tarantoolctl eval breeze_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/breeze_03.control---- running... -
Dusk:
echo 'box.info.status' | sudo tarantoolctl eval dusk_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/dusk_03.control---- running...
-
-
Просмотрите пользователей:
$ echo 'box.space.users:select()' | sudo tarantoolctl eval breeze_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/breeze_03.control---- - ['0bc99438b20746f9b562240aae96cc11', 2367983472, 'user01@vk.team', 'users', 1698455064.1979,1698455064.2732, true, '', 0, {'phone': true, 'email': true}, {'broker': 'vk','keycloack_sync': true, 'region': 'RegionOne', 'mfa': {'email': {'time_enabled': 1698455064.2732,'id': 'd5ed7509-1988-412e-90d3-628df7588636'}}}, true]- ['3ec52ab514884ec7bb4337364b8c8581', 2529402120, 'iam', 'users', 1698453851.4324,1698453851.4324, true, '', 0, {'phone': true, 'email': true}, {'broker': 'vk','region': 'RegionOne', 'mfa': {}}, null]- ['56c1f6ae5ce842d28e05678d8b2ac5d4', 3906841504, 'keycloak@vk.team', 'users',1698455063.9826, 1698455064.0444, true, '', 0, {'phone': true, 'email': true},{'broker': 'vk', 'keycloack_sync': true, 'region': 'RegionOne', 'mfa': {'email': {'time_enabled': 1698455064.0444, 'id': '56b6f10d-501c-40e7-8f9e-56b4b0e060e1'}}},true]... -
Подключитесь к управляющему узлу и проверьте службы
overlord:# systemctl | grep overlordПример ожидаемого результатаoverlord@breeze_03.service loaded active running breeze_03-overlordoverlord@dusk_03.service loaded active running dusk_03-overlordsystem-overlord.slice loaded active active system-overlord.slice
Чтобы установить Core, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s core \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Core:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh(на одном из Controlplane-серверов по пути/root/openrc.sh):ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# yum install python3-openstackclient -y# . ~/openrc.sh -
Проверьте наличие пользователей:
# openstack user listПример ожидаемого результата+----------------------------------+-----------+| ID | Name |+----------------------------------+-----------+| 3dca662a822549e3afd18f7292476e7b | nova || 49c49d96070841c6880b0cd687dbdbfe | neutron || 68ebfe516cdf4302a05d5b2a6105a308 | glance || 6d103a712e7e4fd1a7b173c286473e58 | barbican || 7894971e94e64c32b1c5640de0fae9bd | cinder || cd691f146044472f8e5bb9b4535668e0 | admin || f2ec21c66f3242d29fca8086d41b9843 | placement || f60e5775e18f4b0596db2817a6b85ae8 | katana |+----------------------------------+-----------+ -
Проверьте создание токена для пользователя
admin:# openstack token issueПример ожидаемого результата+------------+-----------------------------------+| Field | Value |+------------+-----------------------------------+| expires | 2023-10-28T16:00:26+0000 || id | gAAAAABl...79Vl-e84RoI6-L4o || project_id | 2a38820cebc1438c8544787374ec3f7d || user_id | cd691f146044472f8e5bb9b4535668e0 |+------------+-----------------------------------+ -
Создайте тестовый секрет:
# openstack secret storeПример ожидаемого результата+---------------+------------------------------------------------------------------------------------------+| Field | Value |+---------------+------------------------------------------------------------------------------------------+| Secret href | https://lk.private.infra.devmail.ru:9311/v1/secrets/56c24d7d-353e-4bc1-9c03-88bc6eb5c5c5 || Name | None || Created | 2023-10-28T15:02:08+00:00 || Status | ACTIVE || Content types | None || Algorithm | aes || Bit length | 256 || Secret type | opaque || Mode | cbc || Expiration | None |+---------------+------------------------------------------------------------------------------------------+ -
Проверьте, что список типов диска не пустой:
# openstack volume type listПример ожидаемого результата+--------------------------------------+-----------+-----------+| ID | Name | Is Public |+--------------------------------------+-----------+-----------+| 5a4cb7e4-09d1-4719-a61c-99a32db75a51 | high-iops | True || 945dd2a4-de2e-407b-a2bc-4d0a415df7d4 | ceph | True |+--------------------------------------+-----------+-----------+ -
Проверьте, что список правил QoS для сети не пустой:
# openstack volume qos listПример ожидаемого результата+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+| ID | Name | Consumer | Associations | Properties |+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+| 4c746341-ab5a-4509-a3e6-20d33c5fbd09 | high-iops | both | high-iops | cache_mode='none', read_iops_sec_per_gb='100', ..., write_iops_sec_per_gb_min='1000' || 10df5d11-9536-45e0-a6eb-7a86d44691fb | ceph | both | ceph | cache_mode='none', read_iops_sec_per_gb='30', ..., write_iops_sec_per_gb_min='500' |+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+ -
Подключитесь к деплой-ноде:
ssh deploy. -
Получите пароль для Katana:
$ cd ~/inventory/vkcloud/$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_katana.openstack.password }}\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "30f9yL70mVeG79u0UJ12"} -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите IP-адрес Katana:
$ sudo kubectl -n sre-vkcloud get endpoints | grep nginxПример ожидаемого результатаkatana-nginx-headless 10.220.0.113:80,10.220.0.47:80 161m -
Запросите у сервиса Katana статус, подставив первый IP и пароль из вывода выше:
$ curl -u katana:30f9yL70mVeG79u0UJ12 10.220.0.113/statusПример ожидаемого результата{"status": true} -
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Проверьте наличие гипервизоров:
# openstack hypervisor listПример ожидаемого результата+----+---------------------+-----------------+------------+-------+| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |+----+---------------------+-----------------+------------+-------+| 3 | kcn002 | QEMU | 10.30.3.15 | down || 6 | kcn001 | QEMU | 10.30.3.14 | down |+----+---------------------+-----------------+------------+-------+ -
Проверьте, что список агрегаторов сети не пустой:
# openstack aggregate listПример ожидаемого результата+----+------+-------------------+| ID | Name | Availability Zone |+----+------+-------------------+| 3 | AZ1 | AZ1 |+----+------+-------------------+ -
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Выведете список всех сетей:
# openstack network listВывод должен быть пустым.
-
Создайте сеть:
# openstack network create net-testПример ожидаемого результата+---------------------------+--------------------------------------+| Field | Value |+---------------------------+--------------------------------------+| admin_state_up | UP || availability_zone_hints | || availability_zones | || created_at | 2023-10-28T15:11:20Z || description | || dns_domain | None || id | 102e5536-3dc6-410f-b510-8bd053fe34cb || ipv4_address_scope | None || ipv6_address_scope | None || is_default | None || is_vlan_transparent | None || mtu | 1400 || name | net-test || port_security_enabled | True || project_id | 2a38820cebc1438c8544787374ec3f7d || provider:network_type | vxlan || provider:physical_network | None || provider:segmentation_id | 68 || qos_policy_id | None || revision_number | 4 || router:external | Internal || segments | None || shared | False || status | ACTIVE || subnets | || tags | || updated_at | 2023-10-28T15:11:20Z |+---------------------------+--------------------------------------+ -
Выведете список всех сетей. Команда должна вывести список, где будет присутствовать ранее созданная сеть:
# openstack network listПример ожидаемого результата+--------------------------------------+----------+---------+| ID | Name | Subnets |+--------------------------------------+----------+---------+| 102e5536-3dc6-410f-b510-8bd053fe34cb | net-test | |+--------------------------------------+----------+---------+ -
Удалите ранее созданную сеть. Команда должна отработать без ошибок:
# openstack network delete net-test -
Снова выведете список всех сетей:
# openstack network listВывод должен быть пустым.
-
Проверьте, что оба SDN включены для администратора:
-
Получите токен:
# export TOKEN=$(openstack token issue -c id -f value) -
Получите адрес sdn-proxy, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://{{ openstack_private_endpoint_ip }}:9696/v2.0/available-sdn/\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://internal.private.corp.devmail.ru:9696/v2.0/available-sdn/"} -
Получите список SDN, доступных данному проекту, из sdn-proxy, выполнив команду на управляющем узле:
# curl -H "X-Auth-Token: $TOKEN" <SDN_PROXY_ADDRESS>Здесь
<SDN_PROXY_ADDRESS>— адрес sdn-proxy, полученный ранее.Пример ожидаемого результата["NEUTRON", "SPRUT"]
-
-
Создайте EVPN-сеть:
# openstack network create --provider-network-type evpn sprut_networkПример ожидаемого результата+---------------------------+--------------------------------------+| Field | Value |+---------------------------+--------------------------------------+| admin_state_up | UP || availability_zone_hints | None || availability_zones | None || created_at | 2024-05-26T18:05:56 || description | || dns_domain | mcs.local. || id | cb9c23c2-fc73-4107-bfad-ffbdc8ba31fa || ipv4_address_scope | None || ipv6_address_scope | None || is_default | None || is_vlan_transparent | None || mtu | 1500 || name | sprut_network || port_security_enabled | True || project_id | 968613d4ee4e4e12bdaf49243b6a63e3 || provider:network_type | evpn || provider:physical_network | || provider:segmentation_id | 0 || qos_policy_id | None || revision_number | None || router:external | Internal || segments | None || shared | False || status | ACTIVE || subnets | || tags | || updated_at | 2024-05-26T18:05:56 |+---------------------------+--------------------------------------+ -
Получите список всех Sprut-сетей через API:
# curl cpn002:2111/v2.0/networks/ | jqПример ожидаемого результата% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 1564 100 1564 0 0 38467 0 --:--:-- --:--:-- --:--:-- 38146[{"id": "00fdc86e-de15-4e09-8112-aaa82fb60d3b","created_at": "2024-05-26T16:05:00","updated_at": "2024-05-26T16:05:00","project_id": "bb1fb187662d427da320bc3b876692ac","tenant_id": "bb1fb187662d427da320bc3b876692ac","name": "dc_router_service_eph_net","description": "","mac_pool": "/v2.0/pools/mac/bdd6b0a1-dfb8-41fe-a46d-b2174832df08","router:external": false,"shared": false,"admin_state_up": true,"port_security_enabled": true,"is_default": false,"mtu": 1500,"network_type": "EPHNetwork","network_meta_uuid": "e9744d0d-a382-47b8-a76d-2dd1b758f9bb","provider:physical_network": "","provider:network_type": "ephn","provider:segmentation_id": 0,"status": "ACTIVE","subnets": ["852e52f0-a386-48a4-8452-06f3ee856bcb"],"tags": [],"dns_domain": "","endpoint_tags": ["dc_vm_api"]},{"id": "cb9c23c2-fc73-4107-bfad-ffbdc8ba31fa","created_at": "2024-05-26T18:05:56","updated_at": "2024-05-26T18:05:56","project_id": "968613d4ee4e4e12bdaf49243b6a63e3","tenant_id": "968613d4ee4e4e12bdaf49243b6a63e3","name": "sprut_network","description": "","mac_pool": "/v2.0/pools/mac/4765c701-7987-4306-9687-2cdd74cec8d8","router:external": false,"shared": false,"admin_state_up": true,"port_security_enabled": true,"is_default": false,"mtu": 1500,"network_type": "EVPNetwork","network_meta_uuid": "fed955d4-a398-4803-9762-38e563e23653","provider:physical_network": "","provider:network_type": "evpn","provider:segmentation_id": 0,"status": "ACTIVE","subnets": [],"tags": [],"private_dns_domain": "mcs.local.","dns_domain": "mcs.local."}] -
Выведете список всех образов:
# openstack image listЕсли включён компонент Sprut, должен отображаться образ
sprut-dc-router-image, иначе вывод должен быть пустым:Пример ожидаемого результата+--------------------------------------+-----------------------------+--------+| ID | Name | Status |+--------------------------------------+-----------------------------+--------+| 0b4aa0a3-c563-452b-b48b-566fe02d3215 | sprut-dc-router-image.0.1.5 | active |+--------------------------------------+-----------------------------+--------+ -
Создайте тестовый образ:
# openstack image create image-testПример ожидаемого результата+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+| Field | Value |+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+| container_format | bare || created_at | 2023-10-28T15:13:02Z || disk_format | raw || file | /v2/images/780c0f09-59aa-4415-82bd-764449a02bbf/file || id | 780c0f09-59aa-4415-82bd-764449a02bbf || min_disk | 0 || min_ram | 0 || name | image-test || owner | 2a38820cebc1438c8544787374ec3f7d || properties | locations='[]', owner_specified.openstack.md5='', owner_specified.openstack.object='images/image-test', owner_specified.openstack.sha256='' || protected | False || schema | /v2/schemas/image || status | queued || tags | || updated_at | 2023-10-28T15:13:02Z || visibility | shared |+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ -
Выведете список всех образов. В списке должен присутствовать ранее созданный образ:
# openstack image listПример ожидаемого результата+--------------------------------------+-------------+--------+| ID | Name | Status |+--------------------------------------+-------------+--------+| 780c0f09-59aa-4415-82bd-764449a02bbf | image-test | queued |+--------------------------------------+-------------+--------+ -
Удалите ранее созданный образ. Команда должна отработать без ошибок:
# openstack image delete image-test -
Выведите список всех образов. В списке не должно быть ранее созданного образа (список должен быть пустым):
# openstack image list
Чтобы установить IaaS, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s iaas \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки IaaS:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Проверьте список сервисов Manila:
# manila service-listПример ожидаемого результата+----+------------------+-------------+------+---------+-------+----------------------------+| Id | Binary | Host | Zone | Status | State | Updated_at |+----+------------------+-------------+------+---------+-------+----------------------------+| 3 | manila-scheduler | cpn001 | AZ1 | enabled | up | 2022-10-29T10:31:03.000000 || 6 | manila-scheduler | cpn003 | AZ1 | enabled | up | 2022-10-29T10:31:12.000000 || 9 | manila-scheduler | cpn002 | AZ1 | enabled | up | 2022-10-29T10:31:03.000000 || 12 | manila-share | cpn001@ceph | AZ1 | enabled | up | 2022-10-29T10:31:08.000000 || 15 | manila-share | cpn003@ceph | AZ1 | enabled | up | 2022-10-29T10:31:06.000000 || 18 | manila-share | cpn002@ceph | AZ1 | enabled | up | 2022-10-29T10:31:04.000000 |+----+------------------+-------------+------+---------+-------+----------------------------+ -
Проверьте доступные пулы для выделения ресурсов на создание хранилища:
# manila pool-listПример ожидаемого результата+------------------+--------+---------+------+| Name | Host | Backend | Pool |+------------------+--------+---------+------+| cpn001@ceph#ceph | cpn001 | ceph | ceph || cpn002@ceph#ceph | cpn002 | ceph | ceph || cpn003@ceph#ceph | cpn003 | ceph | ceph |+------------------+--------+---------+------+ -
Проверьте все дополнительные конфигурации:
# manila extra-specs-listПример ожидаемого результата+--------------------------------------+--------------------+-------------------------------------------+| ID | Name | all_extra_specs |+--------------------------------------+--------------------+-------------------------------------------+| b1aa5e73-ff63-4d07-8c02-1d4d0d3ad74f | default_share_type | create_share_from_snapshot_support : True || | | snapshot_support : True || | | driver_handles_share_servers : True |+--------------------------------------+--------------------+-------------------------------------------+ -
Проверьте все доступные зоны:
# openstack loadbalancer availabilityzone listПример ожидаемого результата+------+--------------------------------------+---------+| name | availability_zone_profile_id | enabled |+------+--------------------------------------+---------+| AZ1 | 7fe03e65-ccec-4211-b387-339cd0d018d6 | True |+------+--------------------------------------+---------+ -
Проверьте список балансировщиков нагрузки:
# openstack loadbalancer provider listПример ожидаемого результата+---------+-------------------------------------------------+| name | description |+---------+-------------------------------------------------+| amphora | The Octavia Amphora driver. || octavia | Deprecated alias of the Octavia Amphora driver. |+---------+-------------------------------------------------+ -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите адрес Front:
$ frontIP=$(sudo kubectl get -n mcs-front-vkcloud pods -l=app.kubernetes.io/instance=mcs -o=custom-columns='IP:.status.podIP' --no-headers | head -n 1)$ echo $frontIPПример ожидаемого результата10.220.0.134 -
Выполните запрос на Front, чтобы убедиться, что он отвечает на запросы:
$ curl $frontIP/appПример ожидаемого результата<!doctype html><html lang="ru"><head><title>Личный кабинет VK Cloud</title><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="robots" content="noindex,nofollow"/><meta name="viewport" content="width=1280,initial-scale=1"/><meta name="format-detection" content="email=no"/><meta name="theme-color" content="#ffffff"/><meta name="msapplication-TileColor" content="#060540"/><meta name="description" content="Полный доступ ко всем облачным сервисам: Виртуальные серверы, S3 - совместимое хранилище, базы данных, кластеры Kubernetes, большие данные, ML."/><meta name="keywords" content="s3,hotbox,icebox,backup,архив,infra,openstack,cloud,storge,облако,b2b"/><link rel="shortcut icon" type="image/x-icon" href="/private/static/50f958eb/favicon.ico" data-react-helmet="true"/><link rel="icon" type="image/png" sizes="32x32" href="/private/static/50f958eb/favicon-32x32.png" data-react-helmet="true"/><link rel="icon" type="image/png" sizes="16x16" href="/private/static/50f958eb/favicon-16x16.png" data-react-helmet="true"/><link rel="dns-prefetch" href="marketplace-prod.mcs.st"/>... -
Получите через деплой-ноду пароль от администратора Keystone:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_keystone_bootstrap_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "9v05j1f6qJq6VlB94a77"} -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите токен, используя ранее полученный пароль в параметре
password:$ curl -s -i -H "Content-Type: application/json" -d '{ "auth": {"identity": {"methods": ["password"], "password": {"user": {"name": "admin", "domain": { "id": "default" }, "password": "9v05j1f6qJq6VlB94a77"}}}, "scope": {"project": {"name": "admin", "domain": { "id": "default" }}}}}' "http://internal.private.infra.devmail.ru:35357/v3/auth/tokens" | grep x-subject-token:Пример ожидаемого результатаx-subject-token: gAAAAABlP6sorAxPfFHeexmC0kI63KF4e8CexM-hFae3oT11IxUoHLOALeUj11P82HZpfDPlWKywRlXTZN66Opu3wkkDhnTCmP9kQWx_QuZuYx22Mdjj7BftVpPOeW6KkXVDejWf4FUFdj-sRKrYceWIIbiZnWpIg_OHywIieK8P5IUrkxBYzMY -
Получите адрес PRICE_API и выведите его:
$ PRICE_API=$(sudo netstat -tln | grep -m1 3112 | awk '{print $4}')$ echo $PRICE_APIПример ожидаемого результата10.30.4.4:3112 -
Получите ответ с доступными API-эндпоинтами, чтобы убедиться, что биллинг отвечает на запросы. Ранее полученный токен подставьте в заголовок
X-Auth-Token:$ curl -g -i -X GET http://${PRICE_API}/v1/ -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: gAAAAABlP6sorAxPfFHeexmC0kI63KF4e8CexM-hFae3oT11IxUoHLOALeUj11P82HZpfDPlWKywRlXTZN66Opu3wkkDhnTCmP9kQWx_QuZuYx22Mdjj7BftVpPOeW6KkXVDejWf4FUFdj-sRKrYceWIIbiZnWpIg_OHywIieK8P5IUrkxBYzMY" -H "Content-Type: application/json"Пример ожидаемого результата — ошибка аутентификацииHTTP/1.1 200 OKcontent-type: application/jsoncontent-length: 51["resource_types", "units", "calculators", "plans"] -
Получите список шаблонов квот:
-
Получите адрес сервиса Quota-Manager, выполнив команду на деплой-ноде:
# cd ~/inventory/vkcloud/# ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://quota-manager-public-superadmin.ep.{{ stand_domain_name }}/v2/templates/\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результата — ошибка аутентификацииcpn001 | SUCCESS => {"msg": "http://quota-manager-public-superadmin.ep.private.infra.devmail.ru/v2/templates/"} -
Подключитесь к управляющему узлу с
openrc.sh:# . openrc.sh -
Получите токен:
# export TOKEN=$(openstack token issue -f value -c id) -
Подставьте полученные данные и выполните запрос:
# curl -L -H "X-Auth-Token: $TOKEN" <QUOTA_MANAGER_ADDRESS>Здесь
<QUOTA_MANAGER_ADDRESS>— адрес сервиса Quota-Manager, полученный ранее.Пример ответ с шаблонами квот для проектов[{"id":"213fbfdf-0e36-451c-b6b5-1dd2b3b363fd","name":"infra+paas","quotas":{"neutron":{"security_group_rule":200,"security_group":12,"floatingip":6,"subnet":10,"network":10,"router":12,"port":120},"cinder":{"volumes_ceph":10,"gigabytes_ceph":200,"volumes_high-iops":10,"gigabytes_high-iops":200,"gigabytes":200,"volumes":10},"nova":{"cores":9,"ram":28672,"instances":6},"manila":{"shares":10,"snapshot_gigabytes":200,"gigabytes":200,"snapshots":5,"share_networks":5},"octavia":{"load_balancer":12},"sprut":{"security_group_rule":200,"security_group":12,"floatingip":50,"subnet":10,"network":10,"router":12,"port":120}}},{"id":"78d1a5bb-3f11-4989-922c-c897bfab3569","name":"infra","quotas":{"neutron":{"security_group_rule":200,"security_group":12,"floatingip":6,"subnet":10,"network":10,"router":12,"port":120},"cinder":{"volumes_ceph":10,"gigabytes_ceph":200,"volumes_high-iops":3,"gigabytes_high-iops":100,"gigabytes":200,"volumes":10},"nova":{"cores":9,"ram":28672,"instances":6},"manila":{"shares":5,"snapshot_gigabytes":100,"gigabytes":100,"snapshots":5,"share_networks":5},"octavia":{"load_balancer":3},"sprut":{"security_group_rule":200,"security_group":3,"floatingip":20,"subnet":5,"network":5,"router":3,"port":30}}}]
-
-
Выполните команду для проверки сервиса Karboii на Kube-мастере:
$ sudo kubectl -n paas-vkcloud get pods -o wide | grep karboiiПример ожидаемого результатаkarboii-karti-api-779bc46456-2ctpb 1/1 Running 0 3h8m 10.220.0.139 cpn003 <none> <none>karboii-karti-api-779bc46456-87zfc 1/1 Running 0 3h8m 10.220.1.238 cpn001 <none> <none>karboii-karti-checkpoints-trigger-job-7c85fc97c7-j2frn 1/1 Running 0 3h8m 10.220.0.136 cpn003 <none> <none>karboii-karti-healer-job-9966b64bd-6pnwc 1/1 Running 0 3h8m 10.220.0.51 cpn002 <none> <none>karboii-karti-metrics-job-5547c8cc74-bvr64 1/1 Running 0 3h8m 10.220.0.31 cpn002 <none> <none>karboii-karti-nova-backup-job-55f6c6ff68-8npz9 1/1 Running 0 3h8m 10.220.0.137 cpn003 <none> <none>karboii-karti-nova-backups-deleter-v2-job-6d575776f5-v59fn 1/1 Running 0 3h8m 10.220.1.239 cpn001 <none> <none>karboii-karti-nova-check-restore-job-54b5c88695-4pr2r 1/1 Running 0 3h8m 10.220.1.254 cpn001 <none> <none>karboii-karti-nova-check-status-job-b557978c9-drxff 1/1 Running 0 3h8m 10.220.0.140 cpn003 <none> <none>karboii-karti-nova-create-restore-job-5ff446bbd9-hvbrx 1/1 Running 0 3h8m 10.220.0.141 cpn003 <none> <none>karboii-karti-nova-janitor-job-794b865d65-xj94z 1/1 Running 0 3h8m 10.220.1.248 cpn001 <none> <none>karboii-karti-task-scheduler-job-b8c57b4cb-zfl5v 1/1 Running 0 3h8m 10.220.0.138 cpn003 <none> <none>... -
Получите адрес сервиса Karboii, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://{{ openstack_public_endpoint_ip }}/infra/karboii/v1\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://lk.private.infra.devmail.ru/infra/karboii/v1"} -
Получите токен и ID проекта, выполнив на управляющем узле следующие команды:
$ . openrc.sh$ TOKEN=$(openstack token issue -f value -c id)$ PROJECT_ID=$(openstack project show $OS_PROJECT_NAME -f value -c id) -
Подставьте полученные данные и выполните запрос:
$ curl -L -H "X-Auth-Token: $TOKEN" <KARBOI_ADDRESS>/$PROJECT_ID/plansЗдесь
<KARBOI_ADDRESS>— адрес сервиса Karboii, полученный ранее.Пример ожидаемого результата{"plans":[]}В результате запроса отсутствуют планы резервного копирования.
Чтобы установить PaaS, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s paas \-b ../ansible-openstack \-i vkcloud.yml
После запуска cloud_audit_logs:
-
Получите адрес сервиса Cloud Audit Logs, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://{{ openstack_public_endpoint_ip }}/auditlogs/v1\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://lk.private.infra.devmail.ru/auditlogs/v1"} -
Получите токен и ID проекта:
# . openrc.sh# TOKEN=$(openstack token issue -f value -c id)# PROJECT_ID=$(openstack project show $OS_PROJECT_NAME -f value -c id) -
Выполните запрос в сервис:
# curl -L -H "X-Auth-Token: $TOKEN" <AUDIT_LOGS_ADDRESS>/$PROJECT_ID/logsЗдесь
<AUDIT_LOGS_ADDRESS>— адрес сервиса Cloud Audit Logs, полученный ранее.Пример ожидаемого результата{"logs":[{"action":"unknown","event_id":"416e9692-417c-4f0c-985b-cd05aaf4c746","method":"POST","request_body":"{\"name\": \"noupdateserviceaccount\", \"version\": \"1.0.0\"}","request_id":"req-fea962fa-8b85-43df-abae-38fe332d210a","response_body":"{\"uuid\": \"624178dc-87c2-41c7-ad44-636c9dbe2f09\", \"name\": \"noupdateserviceaccount\" ... "}]}
Чтобы проверить результат установки PaaS:
-
Проверьте сервис nexus-proxy:
$ sudo kubectl -n nexus-vkcloud get podsПример ожидаемого результатаNAME READY STATUS RESTARTS AGEnexus-proxy-nexus-proxy-846b67bd5f-hqczw 1/1 Running 0 55m
Чтобы проверить Trove:
-
Установите trove-клиент:
$ yum install -y python3-troveclient -
Получите список типов БД:
# trove-3 datastore-listПример ожидаемого результата+-----------------------------------------+---------------------------+| ID | Name |+-----------------------------------------+---------------------------+| b'3364addd-dfb0-43bf-af61-dbce1284b9f6' | b'clickhouse' || b'3b180365-a33a-4d7f-a448-22376a846841' | b'postgresql' || b'59d7b281-07b2-40a9-b54c-0ae2008bb01c' | b'postgrespro' || b'61eb7361-c2f7-432a-ab51-a3ad45630286' | b'mysql' || b'a9abe463-f5bc-4984-9171-2255483fa5f2' | b'galera_mysql' || b'be0abd87-e114-46d2-a1cf-1599a4166536' | b'mongodb' || b'd2854806-97f3-4547-824c-677f7c6e6afe' | b'postgrespro_enterprise' || b'f422fc10-5ab4-4eec-a6ee-4f7ff5108342' | b'redis' |+-----------------------------------------+---------------------------+ -
Убедитесь что список кластеров Magnum не пустой:
# yum install python3-magnumclient -y# magnum cluster-template-listПример ожидаемого результата+--------------------------------------+-------------------------------------------+| uuid | name |+--------------------------------------+-------------------------------------------+| 0e4c2f5b-3caa-4e21-a188-b1d1df1f783d | Kubernetes-almalinux-v1.26.5-mcs.external |+--------------------------------------+-------------------------------------------+ -
Проверьте статистику Magnum:
# magnum stats-listПример ожидаемого результата+----------+-------+| Property | Value |+----------+-------+| clusters | 0 || nodes | 0 |+----------+-------+
Если включён компонент XaaS, проверьте его готовность:
-
Получите адрес сервиса, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://xaas.ep.{{ stand_domain_name }}/status\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://xaas.ep.private.infra.devmail.ru/status"} -
Запросите статус сервиса, выполнив следующую команду на управляющем узле:
$ curl <XAAS_ADDRESS>/statusЗдесь
<XAAS_ADDRESS>— адрес сервиса компонента XaaS, полученный ранее.Пример ожидаемого результата{"status": "ok"}
Если включён компонент MaaS, проверьте его готовность:
-
Получите адрес сервиса, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://{{ openstack_public_endpoint_ip }}/infra/monitoring_dashboards/v1/\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://lk.private.infra.devmail.ru/infra/monitoring_dashboards/v1/"} -
Запросите статус сервиса, выполнив следующую команду на управляющем узле:
$ curl -L <MAAS_ADDRESS>Здесь
<MAAS_ADDRESS>— адрес сервиса компонента MaaS, полученный ранее.Пример ожидаемого результата{"status":"Ok","version":"1.1.2-44-g13a16d7"}
Если включён компонент LaaS, проверьте его готовность:
-
Получите адрес сервиса, выполнив следующие команды на деплой-ноде:
$ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nhttp://{{ openstack_public_endpoint_ip }}/cloudlogs/admin/v1/services\n\n\"" all[0] | sed 's/\\n/\n/g'Пример ожидаемого результатаcpn001 | SUCCESS => {"msg": "http://lk.private.infra.devmail.ru/cloudlogs/admin/v1/services"} -
Выполните запрос к сервису:
$ curl -L -H "X-Auth-Token: $TOKEN" <LAAS_ADDRESS>Здесь
<LAAS_ADDRESS>— адрес сервиса компонента LaaS, полученный ранее.Пример ожидаемого результата{"items":[{"description":"Default logs","id":"default","name":"default","s3_export":false,"title":"Default","ttl":3},{"description":"Container logs","id":"containers","name":"containers","s3_export":false,"title":"Containers","ttl":3},{"description":"Database logs","id":"databases","name":"databases","s3_export":false,"title":"Databases","ttl":3}]}
Если включён glance_type_store:
-
Проверьте вид хранения образов, после того как плейбук
imageloader.ymlзагрузит образы в сервис Glance.В зависимости от значения параметра
glance_type_store, будет использоваться RBD или S3. -
Проверьте вид хранения образов в сервисе Glance:
-
Подключитесь к управляющему узлу:
# . openrc.sh -
Получите список образов:
# openstack image listПример ожидаемого результата+--------------------------------------+--------------------------------------------------+--------+| ID | Name | Status |+--------------------------------------+--------------------------------------------------+--------+| 9c635fbb-906b-4b3b-a7fa-d57656bbeba0 | Clickhouse-22-2023-10-27_09-46-26 | active || f103f56f-513e-4876-a106-b12335b0c770 | GaleraMySQL-v8dot0-1.13.27-2023-10-25_08-01-00 | active || 0d246bd8-55e8-4a89-afb0-e4259eac04f9 | MongoDB-v4dot0--1.13.22-alma-2023-08-17_08-31-19 | active || 01b0f04a-2b71-40c6-bb30-a74a951d2777 | MySQL-v8dot0--1.13.22-alma-2023-08-17_08-31-19 | active || 47824b08-8f81-4b81-a9c0-a07baa1ee052 | PostgreSQL-14-2024-04-11_14-02-00 | active || d56fdc9f-9b11-44b1-aa91-9dd3c6719dfb | PostgresPro-14-2024-04-12_10-45-03 | active || ee2cec2a-bf77-4423-a9b4-46c633505d36 | PostgresProEnterprise-14-2024-04-12_10-45-03 | active || bf8e4c56-a1e2-4baf-9faa-198fe45539e1 | Redis-5-2023-10-26_12-05-13 | active || 13fa622a-4814-4fd2-8728-0450888408bb | almalinux-9-v1.27.6.202404250842.gitb21e5933 | active || a41e7f38-06af-41e1-b5c1-02883a0493d3 | amphora-x64-haproxy-202110110805.gitf2ca0ca2 | active || c870ffa6-262e-4e43-b898-c7f633f1db29 | manila-service-image-20220426 | active || 0b4aa0a3-c563-452b-b48b-566fe02d3215 | sprut-dc-router-image.0.1.5 | active |+--------------------------------------+--------------------------------------------------+--------+ -
Получите адрес хранения для любого из перечисленных образов:
# openstack image show Clickhouse-22-2023-10-27_09-46-26 -c properties -f json | jq .properties.direct_urlПример адреса, если параметр glance_type_store содержит значение rbdrbd://590c3474-daa1-40db-844d-f8e8d3ad2ad9/glance-images/9c635fbb-906b-4b3b-a7fa-d57656bbeba0/snapПример адреса, если параметр glance_type_store содержит значение s3s3://U4gEEbeBvQhedNBztLtH:UvM4WmBqF8jnaUGI9x0X@10.30.3.21:9000/glance/286a3431-0b5b-42bf-96ee-0f43969d642a
-
Чтобы подготовить кластер к работе, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s postdeploy \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат работы Potsdeploy:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh(на текущий момент он будет скопирован на все Controlplane-ноды):ssh cpn003 -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Получите список образов виртуальных машин:
# openstack image listПример ожидаемого результата+--------------------------------------+----------------------------------------------+--------+| ID | Name | Status |+--------------------------------------+----------------------------------------------+--------+| bc051721-4666-4b02-8463-8220fec10fb6 | Almalinux-9.2 | active || 2f059b3d-efef-4d05-a519-fec8576a8bcf | Astra_Linux_SE_1.7.2_Orel_GUI | active || c365aa77-9f78-4ff6-8eb8-b0ba8849060c | CentOS-7.9-22082022 | active || 5da2979b-5a56-4811-86de-69ea56c8077b | RO732_MIN-STD | active || 2c4f7d9a-38ee-4257-80a1-1b96b8551b02 | Ubuntu-22.04-202208 | active || b12e8012-f31d-4abd-9692-05ec27513775 | almalinux-9-v1.26.5.202310172030.git3ca8b01a | active || 914d7fdd-9a22-4e5e-94ce-bc275d6299dd | alt-server-10-rev20230208-x86_64 | active || 9515a531-e5ce-4a03-bd8a-400ac9075b3a | amphora-x64-haproxy-202110110805.gitf2ca0ca2 | active || 88e3e8cb-12cf-433a-8c74-e20650c9b40f | cirros-0.5.1-x86_64 | active |+--------------------------------------+----------------------------------------------+--------+В ответ передаётся список образов ВМ. Статусы образов должны быть
active. -
Получите список образов виртуальных сетей:
-
Если параметр
vars.network_address_cloudexternalзадан, необходимо проверить создание единой внешней сети:# openstack network listПример ожидаемого результата+--------------------------------------+---------------------------+--------------------------------------+| ID | Name | Subnets |+--------------------------------------+---------------------------+--------------------------------------+| 0388e4dd-b50f-4deb-80d3-094f95656541 | manila_service_network | || 4098e5b4-f648-465a-b031-f843d4e53e7f | lb-mgmt-net-AZ1 | 695630bb-3d5e-4200-93fb-c46ccd958ca2 || 77b3516f-4a59-4740-bf35-e9a303cec6f1 | external | 34979516-a0c6-4429-8591-87b583eace11 || 00fdc86e-de15-4e09-8112-aaa82fb60d3b | dc_router_service_eph_net | 852e52f0-a386-48a4-8452-06f3ee856bcb |+--------------------------------------+---------------------------+--------------------------------------+В списке должна присутствовать сеть, заданная в переменных
vars.external_network_name,vars.external_networks_extend. -
Если параметр
vars.network_address_cloudexternalне задан или отсутствует, необходимо проверить создание сетей провайдера, описанных вvars.postdeploy_provider_network:# openstack network listПример ожидаемого результата+--------------------------------------+------------------------+--------------------------------------+| ID | Name | Subnets |+--------------------------------------+------------------------+--------------------------------------+| 54427686-9a4e-4cb7-a806-ac376ea0a058 | provider_net1 | dbbbb0cf-064b-4621-acaf-6e1845f036d4 || bc6ba9f2-b79d-4ed9-b1f9-317dc8f06225 | provider_net2 | 39220fa4-f8b9-4d82-9bed-7e41d4932f07 |...+--------------------------------------+------------------------+--------------------------------------+
-