# vi /etc/memcached.conf
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
# Default connection port is 11211
-p 11211
# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache
#-l 127.0.0.1
-l 192.168.56.30 <--- 수정
# 서비스 확인 및 재기동
# service --status-all
[ + ] memcached
# service memcached stop
# service memcached start
# service memcached status
● memcached.service - memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-06 16:42:47 KST; 3s ago
Docs: man:memcached(1)
Main PID: 29408 (memcached)
Tasks: 10 (limit: 4537)
Memory: 4.5M
CGroup: /system.slice/memcached.service
└─29408 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 192.168.56.30 -P /var/run/memcached/memcached.pid
Jan 06 16:42:47 ubuntu.localdomain systemd[1]: Started memcached daemon.
RabbitMQ는 서로 다른 소프트웨어 시스템 간의 통신을 용이하게 하는 오픈 소스 메시지 브로커 소프트웨어입니다. 이는 메시징 미들웨어 제품군의 일부이며 AMQP(Advanced Message Queuing Protocol)를 구현합니다. RabbitMQ를 사용하면 애플리케이션이 분산되고 확장 가능한 방식으로 데이터와 정보를 교환할 수 있습니다.
RabbitMQ의 주요 기능과 개념은 다음과 같습니다.
메시지 브로커: RabbitMQ는 분산 시스템의 다양한 구성 요소 사이에서 중개자 또는 메시지 브로커 역할을 합니다. 생산자로부터 메시지를 받아 소비자에게 전달합니다.
메시지 큐: 메시지는 수신자가 사용할 때까지 메시지를 보관하는 버퍼 역할을 하는 큐에 배치됩니다. 이는 생산 및 소비 구성 요소를 분리하여 비동기 통신을 허용합니다.
교환: 생산자는 교환에 메시지를 보낸 다음 교환 유형에 의해 정의된 라우팅 규칙에 따라 적절한 대기열로 라우팅합니다. 일반적인 교환 유형에는 직접, 주제, 팬아웃 및 헤더가 포함됩니다.
바인딩: 교환과 큐 간의 연결은 바인딩을 통해 설정됩니다. 바인딩은 메시지가 교환에서 큐로 라우팅되는 방식을 결정하는 라우팅 키 또는 기준을 정의합니다.
게시/구독: RabbitMQ는 게시/구독 패턴을 지원하므로 여러 소비자가 동일한 메시지를 받을 수 있습니다. 이는 바인드된 모든 큐에 메시지를 브로드캐스트하는 팬아웃 교환을 통해 달성됩니다.
메시지 승인: RabbitMQ는 메시지 수신을 승인하는 메커니즘을 제공합니다. 이렇게 하면 메시지가 안정적으로 처리되고 메시지 손실이 방지됩니다.
내구성: RabbitMQ는 메시지와 대기열의 내구성을 지원합니다. 즉, 브로커를 다시 시작해도 메시지와 대기열이 유지될 수 있습니다. 이는 메시지 무결성과 가용성을 유지하는 데 중요합니다.
클러스터링: RabbitMQ는 가용성과 내결함성을 향상시키기 위해 클러스터 구성으로 설정할 수 있습니다. 클러스터링을 사용하면 여러 RabbitMQ 노드가 단일 논리적 브로커로 함께 작동할 수 있습니다.
플러그인 및 확장: RabbitMQ는 다양한 플러그인을 통해 확장되어 메시지 변환, 인증 및 권한 부여 메커니즘과 같은 기능을 추가할 수 있습니다.
RabbitMQ는 확장 가능하고 강력한 분산 시스템을 구축하기 위해 다양한 산업에서 널리 사용됩니다. 마이크로서비스 아키텍처 및 엔터프라이즈 통합 솔루션을 포함하여 복잡한 통신 요구 사항이 있는 애플리케이션을 위한 안정적인 메시징 인프라를 제공합니다
# rabbit MQ 설치되이 있는지 확인하기
# apt search rabbitmq-server
Sorting... Done
Full Text Search... Done
rabbitmq-server/jammy-updates,jammy-security,now 3.9.13-1ubuntu0.22.04.2 all [installed]
AMQP server written in Erlang
root@ubuntu:/#
or
# apt install rabbitmq-server
# rabbit user : openstack / openstack 계정 및 권한을 생성합니다..
# rabbitmqctl add_user openstack openstack
Adding user "openstack" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
# rabbit MQ 대쉬보스 설정 및 서비스 스타트
# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@ubuntu:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@ubuntu...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
# service rabbitmq-server stop
# service rabbitmq-server start
# service rabbitmq-server status
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-06 14:30:57 KST; 2min 33s ago
Main PID: 18157 (beam.smp)
Tasks: 23 (limit: 4537)
Memory: 125.0M
CGroup: /system.slice/rabbitmq-server.service
├─18157 /usr/lib/erlang/erts-12.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30>
├─18168 erl_child_setup 65536
├─18214 inet_gethost 4
└─18215 inet_gethost 4
Jan 06 14:30:53 ubuntu.localdomain systemd[1]: Starting RabbitMQ Messaging Server...
Jan 06 14:30:57 ubuntu.localdomain systemd[1]: Started RabbitMQ Messaging Server.
# rabbitmqctl add_user test test
Adding user "test" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
# rabbitmqctl set_user_tags test administrator
Setting tags for user "test" to [administrator] ...
# rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
Setting permissions for user "test" in vhost "/" ...
# su - stack
$ openstack user list
Missing value auth-url required for auth plugin password
# openstack 관리자 페이지 접속하여 openStack RC 파일을 다운로드 함
- 오른쪽 admin 클릭하면 OpenStack RV
- 다운로드된 admin-openrc.sh 파일
# 다운로드된 admin-openrc.sh 실행스크립트를 서버 아래에 생성
# su - stack
$ cd /opt/stack/
$ vi admin-openrc.sh
--- 아래와 같이 편집함 ---
#!/usr/bin/env bash
# To use an OpenStack cloud you need to authenticate against the Identity
# service named keystone, which returns a **Token** and **Service Catalog**.
# The catalog contains the endpoints for all services the user/tenant has
# access to - such as Compute, Image Service, Identity, Object Storage, Block
# Storage, and Networking (code-named nova, glance, keystone, swift,
# cinder, and neutron).
#
# *NOTE*: Using the 3 *Identity API* does not necessarily mean any other
# OpenStack API is version 3. For example, your cloud provider may implement
# Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is
# only for the Identity API served through keystone.
export OS_AUTH_URL=http://192.168.56.30/identity
# With the addition of Keystone we have standardized on the term **project**
# as the entity that owns the resources.
export OS_PROJECT_ID=249f6e9566fb44bbba10844ed6b7ca15
export OS_PROJECT_NAME="admin"
export OS_USER_DOMAIN_NAME="Default"
if [ -z "$OS_USER_DOMAIN_NAME" ]; then unset OS_USER_DOMAIN_NAME; fi
export OS_PROJECT_DOMAIN_ID="default"
if [ -z "$OS_PROJECT_DOMAIN_ID" ]; then unset OS_PROJECT_DOMAIN_ID; fi
# unset v2.0 items in case set
unset OS_TENANT_ID
unset OS_TENANT_NAME
# In addition to the owning entity (tenant), OpenStack stores the entity
# performing the action as the **user**.
export OS_USERNAME="admin"
# With Keystone you pass the keystone password.
echo "Please enter your OpenStack Password for project $OS_PROJECT_NAME as user $OS_USERNAME: "
read -sr OS_PASSWORD_INPUT
export OS_PASSWORD=$OS_PASSWORD_INPUT
# export OS_PASSWORD=openstack
# If your configuration has multiple regions, we set that information here.
# OS_REGION_NAME is optional and only valid in certain environments.
export OS_REGION_NAME="RegionOne"
# Don't leave a blank variable, unset it if it was empty
if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
- 스크립트 중간에 read, export 명령이 안먹히는 경우 주석처리하고 그냥 export OS_PASSWORD=openstack
# mysql_upgrade -u root -p
The mysql_upgrade client is now deprecated. The actions executed by the upgrade cli ent are now done by the server.
To upgrade, please start the new MySQL binary with the older data directory. Repair ing user tables is done automatically. Restart is not required after upgrade.
The upgrade process automatically starts on running a new MySQL binary with an olde r data directory. To avoid accidental upgrades, please use the --upgrade=NONE optio n with the MySQL binary. The option --upgrade=FORCE is also provided to run the ser ver upgrade sequence on demand.
It may be possible that the server upgrade fails due to a number of reasons. In tha t case, the upgrade sequence will run again during the next MySQL server start. If the server upgrade fails repeatedly, the server can be started with the --upgrade=M INIMAL option to start the server without executing the upgrade sequence, thus allo wing users to manually rectify the problem.
root@ubuntu:~#
# mysql -u root -popenstack -h 192.168.56.30
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
# mysql -uroot -popenstack
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
# MYSQL_PWD="openstack" mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
# mysql_config_editor set --login-path=root --host=localhost --user=root --password --port=3306
Enter password:
# mysql -u root -popenstack -h 192.168.56.30
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
# mysql 환경정보 /etc/mysql/my.cnf
# cat /etc/mysql/my.cnf
#
# The MySQL database server configuration file.
#
#
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
max_connections = 1024
default-storage-engine = InnoDB
sql_mode = TRADITIONAL
#bind-address = 0.0.0.0
bind-address = 192.168.56.30
# mysql 서버 IP 지정하여 접속하기
$ mysql -u root -popenstack -h 192.168.56.30
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
# mysql 상태 조회
mysql> status
--------------
mysql Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
Connection id: 16
Current database:
Current user: root@192.168.56.30
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Protocol version: 10
Connection: 192.168.56.30 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Binary data as: Hexadecimal
Uptime: 10 min 47 sec
Threads: 2 Questions: 16 Slow queries: 0 Opens: 122 Flush tables: 3 Open tables: 41 Queries per second avg: 0.024
--------------
# service --status-all
[ + ] mysql
[ + ] postgresql
# service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-06 14:00:34 KST; 3h 12min ago
Process: 12768 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 12777 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 4537)
Memory: 366.1M
CGroup: /system.slice/mysql.service
└─12777 /usr/sbin/mysqld
Vagrant.configure("2") do |config|
config.vm.box = "alvistack/ubuntu-22.04"
end
# Vargrantfile 에 config.vm.box ="OOO" 의 내용은 https://app.vagrantup.com 사이트에 접속하여 설치하고 싶은 OS를 찾으면 됨 - 저는 오픈스택 홈페이지에서 권장하는 Ubuntu 22.04(jammy) version의 ubuntu OS 이미지를 다운로드함
# alvistack/ubuntu-22.04 이미지를 선택하면 - Vargrantfiel을 아래와 같이 설정하라고 나옴
# 파일수정후 Vargrant UP 실행 (Wiindows CMD.exe 모드에서 실행)
C:\HashiCorp\Vagrant UP
# Oracle VM을 실행하면 VitualBOX에 다음과 같이 VM이 생김 - 설치가 끝나면 아래와 같이 vm이 생성됨 ... HashCorp_defaul......
# 해당 이미지를 중단시키고 해당정보를 수정함 -- 설정에서 수행 - 일반 - 기본 - 이름(N) : alvistack-ubuntu-22.04 (본인이 알기 쉬운 이름으로 수정하면 됨,, 시스템에 영향 없음)
# 시스템 - 마더보드 - 기본 메모리 : 4096MB 로 수정 (또는 이하로 수정) (본인의 PC 사양에 맞게 메모리 수정 : default는 8012MB로 되어 있음)
# 네트워크 아댑터를 수정함 - 어뎁터 모드의 브리지 모드, NAT 모드 차이점, VM DHCP 설정은 해당 게시물 참조 ㅇ o 어뎁터 1 : 어댑터에 브리지 (무작위 모드 : 모두 허용) o 어뎁터 2 : 호스트전용어댑터 (무작위 모드 : 모두 허용)
# VARGRANT 파일 확장 사용 (예시)
# Vargrant 파일로 Oracle VM 환경설정을 할수 있으나 저는 귀찮아서 그냥 VM 만들어 놓고 수동으로 수정함 # Vargant 파일 확장 사용 예시
- login 시 root / vagrant 로 접속 (vargrant 이미지 파일의 기본 패스워드는 vagrant 임) - 일부 root로 로그인이 안될 경우 vargrant/vagrant 로 접속한후 $ sudo passwd root 명령어를 입력하여 root 패스워드를 변경함
# root로 로그인하여 몇가지 수정을 해야 됨
1. 네트워크 IP 설정 2. SSH 접속 (향후 putty.exe로 접속을 위한 sshd_conf 파일 수정 3. 날짜 수정 (시간 설정) 4. apt 업데이트 5. 방화벽 disable (설치를 위해서 일단은 중단)
1. 네트워크 설정
# vi /etc/netplan/00-installer-copnfig.yaml (파일 수정후)
# netplan apply
# 아래 2개 명령어 실행이 안되면 다음으로 넘어감 (설치되어 있을수도 있음)
# vi /etc/netplan/00-installer-copnfig.yaml (파일 수정후)
# netplan apply
- eth0 : DHCP 집(카페 등) 공유기 IP 대역 (192.168.219.16은 공유기에서 자동으로 받아옴) - eth1 : Oracle VM에 설치된 서버의 IP (192.168.56.30은 netplan 파일 수정)
2. SSH 접속 (향후 putty.exe로 접속을 위한 sshd_conf 파일 수정)
# /etc/ssh/sshd_config 파일에 다음 항목을 수정
PermitRootLogin yes로 변경
PasswordAuthentication yes로 변경
=================
Async summary
=================
Time spent in the background minus waits: 547 sec
Elapsed time: 2092 sec
Time if we did everything serially: 2639 sec
Speedup: 1.26147
Post-stack database query stats:
+------------+-----------+-------+
| db | op | count |
+------------+-----------+-------+
| keystone | SELECT | 46213 |
| keystone | INSERT | 93 |
| neutron | SELECT | 3917 |
| neutron | CREATE | 1 |
| neutron | SHOW | 4 |
| neutron | INSERT | 4111 |
| neutron | DELETE | 28 |
| neutron | UPDATE | 116 |
| placement | SELECT | 46 |
| placement | INSERT | 55 |
| placement | SET | 1 |
| nova_api | SELECT | 114 |
| nova_cell0 | SELECT | 75 |
| nova_cell1 | SELECT | 178 |
| nova_cell0 | INSERT | 5 |
| nova_cell0 | UPDATE | 6 |
| nova_cell1 | UPDATE | 42 |
| nova_cell1 | INSERT | 4 |
| cinder | SELECT | 121 |
| cinder | INSERT | 5 |
| placement | UPDATE | 3 |
| cinder | UPDATE | 3 |
| nova_api | INSERT | 20 |
| glance | SELECT | 47 |
| glance | INSERT | 6 |
| glance | UPDATE | 2 |
| cinder | DELETE | 1 |
| nova_api | SAVEPOINT | 10 |
| nova_api | RELEASE | 10 |
+------------+-----------+-------+
This is your host IP address: 192.168.56.30
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.56.30/dashboard
Keystone is serving at http://192.168.56.35/identity/
The default users are: admin and demo
The password: openstack
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: 2023.2
Change: b082d3fed3fe05228dabaab31bff592dbbaccbd9 Make multiple attempts to download image 2023-12-12 08:07:39 +0000
OS Version: Ubuntu 22.04 jammy
# 설치과정 로그파일 첨부
- 설치시 여러번 설치 실패로 192.168.56.30, 192.168.56.35, 192.168.56.36 192.168.56.41 등 한 20번은 IP를 바꿔가며 설치 한것 같네요,,, 그러다 보니 서버 IP 및 로그 IP가 제 각각 입니다. (본인 IP 설정에 맞게 비교해 보시면 됩니다.)
CREATE USER 'neutron'@'localhost' IDENTIFIED BY 'neutrondbpass';
CREATE USER 'neutron'@'%' IDENTIFIED BY 'neutrondbpass';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%';
(변경) keystone
CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'keystonedbpass';
CREATE USER 'keystone'@'%' IDENTIFIED BY 'keystonedbpass';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';
# inventory 파일 [web] tnode1-centos.exp.com tnode2-ubuntu.exp.com [all] tnode1-centos.exp.com tnode2-ubuntu.exp.com tnode3-rhel.exp.com
# ansible web -m sheel -a "uptime" or # ansible all -m sheel -a "uptime"
실행은 되나 아래와 같은 에러가 남 - host 중에 ubuntu 에서 에러남
[DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host tnode2-ubuntu.exp.com should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[지원 중단 경고]: 호스트 tnode2-ubuntu.exp.com의 배포 Ubuntu 18.04는 /usr/bin/python3을 사용해야 하지만 이전 Ansible 릴리스와의 하위 호환성을 위해 /usr/bin/python을 사용하고 있습니다. 향후 Ansible 릴리스에서는 기본적으로 이 호스트에 대해 검색된 플랫폼 Python을 사용하게 됩니다. 자세한 내용은 https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html을 참조하세요. 이 기능은 버전 2.12에서 제거됩니다. ansible.cfg에서 deprecation_warnings=False를 설정하여 사용 중단 경고를 비활성화할 수 있습니다.
# 조치
# python2와 python3 을 공통으로 맞추고 --> 맞추는 방법 https://hwpform.tistory.com/67 Ansible - 05 (python3 설정) 참조
# inventory 파일 아래 추가 ansible_python_interpreter=/usr/bin/python3
# 다시실행 # ansible all -m ping
--> tnode1번에서 다시 오류가 남 (원인 tnode1에 python3가 설치가 안되어 있음) # tnode1번 서버에서 python3 설치
# 10.0.2.15 : PC의 무선랜 IP 192.168.1.156과 통신하는 IP 입니다.
결국 가상화 서버 192.168.56.22 가 외부 인터넷과 통신을 하려면 - 192.168.56.22(eth1)에서 --> 10.0.2.15(eth0) ---> 10.0.2.2(gw) ---> 192.168.1.156 (노트북 ip) ---> 192.168.1.1(공유기 gw) ---> 공유기 외부 인터페이스(공인ip)로 통신 함