dbconfig-common 데이터베이스 설정

dbconfig-common 데이터베이스 설정

많은 OpenStack 서비스들은 데이터베이스 접속 설정을 필요로 합니다. 다음과 같은 DSN (Database Source Name) 구성을 통해 설정됩니다:

[database]
connection = mysql+pymysql://keystone:0dec658e3f14a7d@localhost/keystonedb

connection 지시자는 표준 Debian 인터페이스를 제공하는 dbconfig-common 패키지에 의해 다루어집니다. 이는 Debian 데이터베이스 매개변수를 구성하는 것을 가능하게 합니다. 많은 언어를 위한 현지화된 프롬프트를 포함하며, 다음 데이터베이스 백엔드를 지원합니다: SQLite, MySQL, 그리고 PostgreSQL.

디폴트로 SQLite를 사용하기 위해 dbconfig-common 패키지는 OpenStack 서비스를 설정합니다. 그래서 만약 pre-seeding없이 non-interactive mode 에서 debconf 를 사용하고 있다면 설치된 OpenStack 서비스는 SQLite를 사용 할 것입니다.

디폴트로, dbconfig-common 는 네트워크 상에서 데이터베이스 서버에 대한 액세스를 제공하지 않습니다. dbconfig-common 패키지를 UNIX 소켓 파일을 통해서가 아닌 네트워크 상에서 액세스하도록 원격 데이터베이스에 대해 가리키토록 하고자 하는 경우엔 다음과 같이 재구성합니다:

# apt-get install dbconfig-common && dpkg-reconfigure dbconfig-common

해당 화면들은 dbconfig-common 패키지를 재구성할 때 나타납니다:

../_images/dbconfig-common_keep_admin_pass.png

../_images/dbconfig-common_used_for_remote_db.png

다른 debconf 프롬프트와 달리, debconf-set-selections 를 사용함으로써 dbconfig-common 프롬프트에 대한 반응을 미리 설정할 수 없습니다. 대신, /etc/dbconfig-common 위치에 파일을 생성해야 합니다. 예를 들면 다음과 같이 /etc/dbconfig-common/keystone.conf 에 위치하는 dbconfig-common 에 대한 keystone 구성 파일을 생성할 것입니다:

dbc_install='true'
dbc_upgrade='true'
dbc_remove=''
dbc_dbtype='mysql'
dbc_dbuser='keystone'
dbc_dbpass='PASSWORD'
dbc_dbserver=''
dbc_dbport=''
dbc_dbname='keystonedb'
dbc_dbadmin='root'
dbc_basepath=''
dbc_ssl=''
dbc_authmethod_admin=''
dbc_authmethod_user=''

해당 파일을 생성한 이후 다음 명령을 실행하십시오:

# apt-get install keystone

해당 Identity 서비스는 MySQL을 데이터베이스 백엔드로, keystonedb 을 데이터베이스 이름으로, 그리고 localhost 소켓 파일과 함께 설치됩니다. 대응하는 DNS는 다음과 같습니다:

[database]
connection = mysql+pymysql://keystone:PASSWORD@localhost/keystonedb

dbconfig-common 패키지는 MySQL 권한 접근을 구성하고 데이터베이스를 생성할 것입니다. OpenStack 2014.1.1 이후, Debian에서의 모든 OpenStack 패키지들은 데이터베이스 생성 후 다음 MySQL 쿼리를 실행합니다 (MySQL을 백엔드로 결정한 경우):

ALTER DATABASE keystone CHARACTER SET utf8 COLLATE utf8_unicode_ci

따라서 Debian을 사용하는 경우, 데이터베이스 생성, 액세스 권한, 문자셋을 고려할 필요가 없습니다. 이 모든 것은 패키지에 의해 핸들링됩니다.

하나의 예로, cinder-common 패키지의 스크린샷은 다음과 같습니다:

../_images/dbconfig-common_1_configure-with-dbconfig-yes-no.png

../_images/dbconfig-common_2_db-types.png

../_images/dbconfig-common_3_connection_method.png

../_images/dbconfig-common_4_mysql_root_password.png

../_images/dbconfig-common_5_mysql_app_password.png

../_images/dbconfig-common_6_mysql_app_password_confirm.png

디폴트로 Debian에서는 localhost로부터 MySQL 서버에 소켓 파일 또는 127.0.0.1로 액세스 가능합니다. 네트워크 상에서 접근하려면, /etc/mysql/my.cnf 파일 및 mysql.user 테이블을 수정해야 합니다. 이를 수행하기 위해, Debian에서는 openstack-deploy 패키지 내 헬퍼 스크립트를 제공합니다. 이를 사용하기 위해 해당 패키지를 설치합니다:

# apt-get install openstack-deploy

그리고 헬퍼 스크립트를 실행하십시오:

# /usr/share/openstack-deploy/mysql-remote-root

대신 이 꾸러미를 설치하지 않으려면 원격 루트 접근을 가능케 하기 위해 이 스크립트를 실행하십시오:

#!/bin/sh

set -e

SQL="mysql --defaults-file=/etc/mysql/debian.cnf -Dmysql -e"

ROOT_PASS=`${SQL} "SELECT Password FROM user WHERE User='root' LIMIT 1;" \
  | tail -n 1`
${SQL} "REPLACE INTO user SET host='%', user='root',\
  password='${ROOT_PASS}', Select_priv='Y', Insert_priv='Y',\
  Update_priv='Y', Delete_priv='Y', Create_priv='Y', Drop_priv='Y',\
  Reload_priv='Y', Shutdown_priv='Y', Process_priv='Y',  File_priv='Y',\
  Grant_priv='Y', References_priv='Y', Index_priv='Y', Alter_priv='Y',\
  Super_priv='Y', Show_db_priv='Y', Create_tmp_table_priv='Y',\
  Lock_tables_priv='Y', Execute_priv='Y', Repl_slave_priv='Y',\
  Repl_client_priv='Y', Create_view_priv='Y', Show_view_priv='Y',\
  Create_routine_priv='Y', Alter_routine_priv='Y', Create_user_priv='Y',\
  Event_priv='Y', Trigger_priv='Y' "
${SQL} "FLUSH PRIVILEGES"
sed -i 's|^bind-address[ \t]*=.*|bind-address = 0.0.0.0|' /etc/mysql/my.cnf
/etc/init.d/mysql restart

여러 노드에서 동작하는 OpenStack 서비스를 설치하기전 원격 접속이 가능하게 설정해야합니다.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.