본 문서(GlusterFS 서비스팩 설치 가이드)는 전자정부 표준 프레임워크 기반의 PaaS-TA에서 제공되는 서비스팩인 GlusterFS 서비스팩을 Bosh를 이용하여 설치 하는 방법과 PaaS-TA의 SaaS 형태로 제공하는 Application 에서GlusterFS 서비스를 사용하는 방법을 기술하였다. PaaS-TA 3.5 버전부터는 Bosh2.0 기반으로 deploy를 진행하며 기존 Bosh1.0 기반으로 설치를 원할경우에는 PaaS-TA 3.1 이하 버전의 문서를 참고한다.
1.2. 범위
설치 범위는 GlusterFS 서비스팩을 검증하기 위한 기본 설치를 기준으로 작성하였다.
1.3. 시스템 구성도
본 문서의 설치된 시스템 구성도이다. Mysql Server, GlusterFS 서비스 브로커로 최소사항을 구성하였고 서비스 백엔드는 외부에 구성되어 있다.
BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
Cloud config 설정 내용을 확인한다.
$ bosh -e micro-bosh cloud-config
common_vars.yml을 서버 환경에 맞게 수정한다.
glusterfs에서 사용하는 변수는 system_domain, paasta_admin_username, paasta_admin_password 이다.
$ vi ~/workspace/paasta-5.5.1/deployment/common/common_vars.yml
Deployment YAML에서 사용하는 변수 파일을 서버 환경에 맞게 수정한다.
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/glusterfs/vars.yml
2.5. 서비스 설치
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고, Option file을 추가할지 선택한다.
(선택) -o operations/use-compiled-releases.yml (ubuntu-xenial/621.94로 컴파일 된 릴리즈 사용)
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/glusterfs/deploy.sh
서비스를 설치한다.
2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식
서비스 설치에 필요한 릴리즈 파일을 다운로드 받아 Local machine의 서비스 설치 작업 경로로 위치시킨다.
[SERVICE_BROKER] : 서비스 브로커 명 [USERNAME] / [PASSWORD] : 서비스 브로커에 접근할 수 있는 사용자 ID / PASSWORD [SERVICE_BROKER_URL] : 서비스 브로커 접근 URL $ cf create-service-broker glusterfs-service admin cloudfoundry http://10.30.107.197:8080
등록된 GlusterFS 서비스 브로커를 확인한다.
$ cf service-brokers
접근 가능한 서비스 목록을 확인한다.
$ cf service-access
서비스 브로커 등록시 최초에는 접근을 허용하지 않는다. 따라서 access는 none으로 설정된다.
특정 조직에 해당 서비스 접근 허용을 할당하고 접근 서비스 목록을 다시 확인한다. (전체 조직)
Using environment '10.0.1.6' as client 'admin'
Name Version OS CPI CID
bosh-aws-xen-hvm-ubuntu-xenial-go_agent 621.94* ubuntu-xenial - ami-0297ff649e8eea21b
(*) Currently deployed
1 stemcells
Succeeded
# Deployment 다운로드 파일 위치 경로 생성 및 설치 경로 이동
$ mkdir -p ~/workspace/paasta-5.5.1/deployment
$ cd ~/workspace/paasta-5.5.1/deployment
# Deployment 파일 다운로드
$ git clone https://github.com/PaaS-TA/service-deployment.git -b v5.0.6
# common_vars.yml 파일 다운로드(common_vars.yml가 존재하지 않는다면 다운로드)
$ git clone https://github.com/PaaS-TA/common.git
# BOSH INFO
bosh_ip: "10.0.1.6" # BOSH IP
bosh_url: "https://10.0.1.6" # BOSH URL (e.g. "https://00.000.0.0")
bosh_client_admin_id: "admin" # BOSH Client Admin ID
bosh_client_admin_secret: "ert7na4jpew48" # BOSH Client Admin Secret('echo $(bosh int ~/workspace/paasta-5.5.1/deployment/paasta-deployment/bosh/{iaas}/creds.yml --path /admin_password)' 명령어를 통해 확인 가능)
bosh_director_port: 25555 # BOSH director port
bosh_oauth_port: 8443 # BOSH oauth port
bosh_version: 271.2 # BOSH version('bosh env' 명령어를 통해 확인 가능, on-demand service용, e.g. "271.2")
# PAAS-TA INFO
system_domain: "61.252.53.246.xip.io" # Domain (xip.io를 사용하는 경우 HAProxy Public IP와 동일)
paasta_admin_username: "admin" # PaaS-TA Admin Username
paasta_admin_password: "admin" # PaaS-TA Admin Password
paasta_nats_ip: "10.0.1.121"
paasta_nats_port: 4222
paasta_nats_user: "nats"
paasta_nats_password: "7EZB5ZkMLMqT73h2Jh3UsqO" # PaaS-TA Nats Password (CredHub 로그인후 'credhub get -n /micro-bosh/paasta/nats_password' 명령어를 통해 확인 가능)
paasta_nats_private_networks_name: "default" # PaaS-TA Nats 의 Network 이름
paasta_database_ips: "10.0.1.123" # PaaS-TA Database IP (e.g. "10.0.1.123")
paasta_database_port: 5524 # PaaS-TA Database Port (e.g. 5524(postgresql)/13307(mysql)) -- Do Not Use "3306"&"13306" in mysql
paasta_database_type: "postgresql" # PaaS-TA Database Type (e.g. "postgresql" or "mysql")
paasta_database_driver_class: "org.postgresql.Driver" # PaaS-TA Database driver-class (e.g. "org.postgresql.Driver" or "com.mysql.jdbc.Driver")
paasta_cc_db_id: "cloud_controller" # CCDB ID (e.g. "cloud_controller")
paasta_cc_db_password: "cc_admin" # CCDB Password (e.g. "cc_admin")
paasta_uaa_db_id: "uaa" # UAADB ID (e.g. "uaa")
paasta_uaa_db_password: "uaa_admin" # UAADB Password (e.g. "uaa_admin")
paasta_api_version: "v3"
# UAAC INFO
uaa_client_admin_id: "admin" # UAAC Admin Client Admin ID
uaa_client_admin_secret: "admin-secret" # UAAC Admin Client에 접근하기 위한 Secret 변수
uaa_client_portal_secret: "clientsecret" # UAAC Portal Client에 접근하기 위한 Secret 변수
# Monitoring INFO
metric_url: "10.0.161.101" # Monitoring InfluxDB IP
syslog_address: "10.0.121.100" # Logsearch의 ls-router IP
syslog_port: "2514" # Logsearch의 ls-router Port
syslog_transport: "relp" # Logsearch Protocol
saas_monitoring_url: "61.252.53.248" # Pinpoint HAProxy WEBUI의 Public IP
monitoring_api_url: "61.252.53.241" # Monitoring-WEB의 Public IP
### Portal INFO
portal_web_user_ip: "52.78.88.252"
portal_web_user_url: "http://portal-web-user.52.78.88.252.xip.io"
### ETC INFO
abacus_url: "http://abacus.61.252.53.248.xip.io" # abacus url (e.g. "http://abacus.xxx.xxx.xxx.xxx.xip.io")
# STEMCELL
stemcell_os: "ubuntu-xenial" # stemcell os
stemcell_version: "621.94" # stemcell version
# NETWORK
private_networks_name: "default" # private network name
public_networks_name: "vip" # public network name
# MYSQL
mysql_azs: [z4] # mysql azs
mysql_instances: 1 # mysql instances
mysql_vm_type: "medium" # mysql vm type
mysql_persistent_disk_type: "1GB" # mysql persistent disk type
mysql_port: 13306 # mysql port (e.g. 13306) -- Do Not Use "3306"
mysql_admin_username: "<MYSQL_ADMIN_USERNAME>" # mysql admin username (e.g. "root")
mysql_admin_password: "<MYSQL_ADMIN_PASSWORD>" # mysql admin password (e.g. "admin1234")
# GLUSTERFS SERVER
glusterfs_url: "<GLUSTERFS_PUBLIC_IP>" # Glusterfs 서비스 public 주소
glusterfs_tenantname: "<GLUSTERFS_TENANT_NAME>" # Glusterfs 서비스 테넌트 이름(e.g. "service")
glusterfs_username: "<GLUSTERFS_USERNAME>" # Glusterfs 서비스 계정 아이디(e.g. "swift")
glusterfs_password: "<GLUSTERFS_PASSWORD>" # Glusterfs 서비스 암호(e.g. "password")
# GLUSTERFS_BROKER
broker_azs: [z4] # glusterfs broker azs
broker_instances: 1 # glusterfs broker instances
broker_persistent_disk_type: "4GB" # glusterfs broker persistent disk type
broker_vm_type: "small" # glusterfs broker vm type
# GLUSTERFS_BROKER_REGISTRAR
broker_registrar_azs: [z4] # broker registrar azs
broker_registrar_instances: 1 # broker registrar instances
broker_registrar_vm_type: "small" # broker registrar vm type
# GLUSTERFS_BROKER_DEREGISTRAR
broker_deregistrar_azs: [z4] # broker deregistrar azs
broker_deregistrar_instances: 1 # broker deregistrar instances
broker_deregistrar_vm_type: "small" # broker deregistrar vm type
#!/bin/bash
# VARIABLES
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
bosh -e ${BOSH_ENVIRONMENT} -n -d glusterfs deploy --no-redact glusterfs.yml \
-l ${COMMON_VARS_PATH} \
-l vars.yml
$ cd ~/workspace/paasta-5.5.1/deployment/service-deployment/glusterfs
$ sh ./deploy.sh
# 릴리즈 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.5.1/release/service
# 릴리즈 파일 다운로드 및 파일 경로 확인
$ ls ~/workspace/paasta-5.5.1/release/service
paasta-glusterfs-2.0.1.tgz
#!/bin/bash
# VARIABLES
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
bosh -e ${BOSH_ENVIRONMENT} -n -d glusterfs deploy --no-redact glusterfs.yml \
-l ${COMMON_VARS_PATH} \
-l vars.yml \
-v releases_dir="/home/ubuntu/workspace/paasta-5.5.1/release"
$ cd ~/workspace/paasta-5.5.1/deployment/service-deployment/glusterfs
$ sh ./deploy.sh
Using environment '10.0.1.6' as client 'admin'
Task 1343. Done
Deployment 'glusterfs'
Instance Process State AZ IPs VM CID VM Type Active
mysql/8770bc70-8681-4079-8360-086219d6231b running z3 10.30.52.10 vm-96697221-0ff9-4520-8a68-2314c62057a5 medium true
paasta-glusterfs-broker/229fb890-645b-4213-89a1-fc2116de3f54 running z3 10.30.52.11 vm-ace55b8f-3ce0-4482-b03b-96fbc567592e medium true
2 vms
Succeeded
$ cf service-brokers
Getting service brokers as admin...
name url
No service brokers found
$ cf create-service-broker glusterfs-service admin cloudfoundry http://10.30.107.197:8080
Creating service broker glusterfs-service as admin...
OK
$ cf service-brokers
Getting service brokers as admin...
name url
glusterfs-service http://10.30.107.197:8080
$ cf service-access
Getting service access as admin...
broker: glusterfs-service
service plan access orgs
glusterfs glusterfs-5Mb none
glusterfs glusterfs-100Mb none
glusterfs glusterfs-1000Mb none
$ cf enable-service-access glusterfs
Enabling access to all plans of service glusterfs for all orgs as admin...
OK
$ cf service-access
Getting service access as admin...
broker: glusterfs-service
service plan access orgs
glusterfs glusterfs-5Mb all
glusterfs glusterfs-100Mb all
glusterfs glusterfs-1000Mb all