- UCloud Architecture
- UCloud 기본 설정
- Server 준비
- CentOS 설치
- Network Setting
- CentOS 추가 설치
- UCloud의 Disk Mount
- Software 설치
- MySQL
- Apache Http Server
- PHP
- Utility
- 메일 서버 구축
- 사이트 구축
- NFS
- NFS Server
- NFS Client
- Mount
- MySQL Data folder 변경
- MySQL Replication
- Master
- Slave
- Dual Master
- MySQL Replication 복구
- Replication 상태 확인
- 자동 복구
- 전형적인 복구 방법
- MySQL Replication 복구 참고
- Apache SSL 설정
- Monitoring과 Turning
- UCloud 오류 및 조치
- 이미지로 서버 추가시 주의 사항
- KT UCloud 관리자 가이드
- 서버 신청
- 참고 문헌
UCloud biz를 정리 합니다.
홈페이지 : https://ucloudbiz.olleh.com/
UCloud Architecture
{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center"
|-
|width="20%" align="center" valign="middle" style="background-color:#eee;"|분류
|width="40%" align="center" valign="middle" style="background-color:#eee;"|FOSS
|width="40%" align="center" valign="middle" style="background-color:#eee;"|상용 S/W
|-
|align="center" valign="middle" style="background-color:#eee;"|Cloud OS
|
CloudStack 2.x / Apache 2.0 : IaaS 관리
Platespin : P2V migration
enStratus : Auto Provisioning, Scale-out/up Solution
HAProxy
|
|-
|align="center" valign="middle" style="background-color:#eee;"|Hypervisor
|Citrix Xen Server 5.x
|
|-
|align="center" valign="middle" style="background-color:#eee;"|Storage
|MySQL : DBMS
OpenStack Swift : Object Storage
ZFS : 가상화 파일 시스템
NexentaStor : 가상 Storage 관리
|RRDTool : Round Robin Database Tool align="center" valign="middle" style="background-color:#eee;" Hyperic : Manage Web Application
OpenVPN : VPN
Spring
|
|-
|align="center" valign="middle" style="background-color:#eee;"|Automation
|Chef : 서버 설치 및 구성 자동화
|
|-
|align="center" valign="middle" style="background-color:#eee;"|Monitoring
|Nagios : 물리서버, Network 모니터링
Cacti : 모니터링 Data History 관리, Reporting
CAMS : VM 및 Middleware 모니터링
Zabbix : 모니터링
Collectd : System과 Network 성능정보 모니터링
|
|-
|align="center" valign="middle" style="background-color:#eee;"|Logging & Analyze
|[[Splunk]] : 시스템 로그 정보 수집 및 분석 -> Zabbix
syslog-ng : syslog 프로토콜을 구현, syslog 정보를 가져옴
|
|}
UCloud 기본 설정
CentOS 6.4 x86_64 서버를 설정 합니다.
Server 준비
방안 1 : UCloud 사이트에서 서버를 신청 합니다.
UCloud 사용시 Port Forwarding 설정
"클라우드 콘솔 -> 네트워크 -> 선택 -> Port Forwarding" 메뉴에서 22/tcp 등록
22 port는 SSH 포트로서 ssh와 sftp (SSH File Transfer Protocol)에서 사용 합니다.
방안 2 : Oracle VirtualBox에서 가상 서버를 구축 합니다.
가상 서버의 Memory를 1024 MB 이상을 설정하여야 GUI 화면이 뜨면서 제대로 설치가 됩니다.
Network Adapter 1 : NAT
Network Adapter 2 : 호스트 전용 어댑터
"VirtualBox Host-Only Ethernet Adapter" 설정
VirtualBox에서 "파일 -> 환경 설정 -> 네트워크 -> VirtualBox Host-Only Ethernet Adapter" 메뉴를 선택 합니다.
어댑터
:*IPv4 주소 : 192.168.56.1
:*IPv4 서브넷 마스크 : 255.255.255.0DHCP 서버
:*서버 사용함 선택
:*서버 주소 : 192.168.56.100
:*서버 마스크 : 255.255.255.0
:*최저 주소 한계 : 192.168.56.101 :*최대 주소 한계 : 192.168.56.254
CentOS 설치
[[CentOS - 설치]] 문서를 참조하여 CentOS를 설치 합니다.
설치시 "Basic Server"를 선택하여 설치 합니다.
Network 카드 재기동
ifconfig -a #--- Network 카드별로 IP 값이 표시되지 않으면 아래 실행
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
vi /etc/sysconfig/network-scripts/ifcfg-eth1
ONBOOT=yes
service network restart
ifconfig -a #--- Network 카드별로 IP값이 표시되는 지 확인
Putty로 eth1에 할당된 IP를 사용하여 접속 합니다.
UTF-8 설정
"창 -> 변환 -> 수신한 데이터를 이 문자셋으로 가정" 에서 "UTF-8"을 선택 합니다/
작업 폴더 생성
mkdir /appl
mkdir /cloudnas
cd /cloudnas
mkdir backup
mkdir bin
mkdir config
mkdir custom
mkdir database
mkdir install
mkdir logs
mkdir template
mkdir www
cd www
mkdir html
vi ~/.bashrc
### ----------------------------------------------------------------------------
### Linux Bash Shell 설정
### ----------------------------------------------------------------------------
alias dir='ls -alF'
alias dird='ls -alF | grep /'
export LANG=ko_KR.utf8
### ----------------------------------------------------------------------------
### Linux Bash Shell Script를 위한 설정
### ----------------------------------------------------------------------------
export CONFIG_DIR=/cloudnas/config
export DOCUMENT_SUB=none
if [ [$DOCUMENT_SUB = 'none' ] ](); then #--- 복사하여 붙일때는 여기에 빈공백을 제거하세요
CDPATH=.:/cloudnas/www/html:/cloudnas:/appl
else
CDPATH=.:/cloudnas/www/html/$DOCUMENT_SUB:/cloudnas:/appl
fi
PATH=$PATH:/cloudnas/bin
.bashrc 실행
cd
. .bashrc
Network Setting
Network 설정 파일 확인
ifconfig -a #--- Network 카드의 이름을 확인 합니다. (lo, eth0, eth1)
cd /etc/sysconfig/network-scripts/
ls -alF ifcfg-*
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#--- eth0 네트워크 카드에 DHCP 설정시
DEVICE=eth0
HWADDR=08:00:27:C5:DB:97
TYPE=Ethernet
UUID=4ccc4e1f-1ac3-42b7-8085-2f1f6ce969f0
ONBOOT=yes #--- no로 되어 있으면 yes로 수정 합니다.
NM_CONTROLLED=yes
BOOTPROTO=dhcp #--- DHCP를 사용하여 자동으로 IP를 할당 받도록 합니다.
DNS2=168.126.63.1
DNS1=164.124.101.2
USERCTL=no
PEERDNS=yes
IPV6INIT=no
ONBOOT가 no로 되어 있을 경우 yes로 수정한 후 network 카드를 동작하도록 하는 방법
ifdown eth0
ifup eth0
ifconfig -a
vi /etc/sysconfig/network-scripts/ifcfg-eth1
#--- eth1 네트워크 카드에 고정 IP 설정시
DEVICE=eth1
HWADDR=08:00:27:83:B8:E2 #--- 원래 있던 값을 사용
TYPE=Ethernet
UUID=10ccad3a-9217-4092-a590-07537033eefb #--- 원래 있던 값을 사용
ONBOOT=yes
IPADDR=192.168.56.151 #--- 호스트 전용 네트워크에 설정된 값을 참조하여 설정
NETMASK=255.255.255.0 #--- 호스트 전용 네트워크에 설정된 값을 참조하여 설정
GATEWAY=192.168.56.1 #--- 호스트 전용 네트워크에 설정된 값을 참조하여 설정
USERCTL=no
IPV6INIT=no
PEERDNS=no
BOOTPROTO=static
network 카드를 재기동 합니다.
service network restart
ifconfig -a
eth1에 설정된 IP 정보로 putty를 사용하여 다시 접속 합니다.
vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=cloud001.cloudserver.com #--- 호스트명과 도메인명 지정
명령행에서 hostname과 domainname 설정
hostname cloud001
domainname cloudserver.com
vi /etc/hosts
#--- 파일의 최상단에 eth1에 설정된 IP로 host 이름을 추가 합니다.
192.168.56.151 cloud001.cloudserver.com cloud001
vi /etc/resolv.conf
search local cloudserver.com
nameserver 210.220.163.82
nameserver 219.250.36.130
nameserver 164.124.101.2 #--- 데이콤에서 사용하는 nameserver IP
nameserver 168.126.63.1 #--- 코넷에서 사용하는 nameserver IP
nameserver 175.115.93.35 #--- 다우기술
nameserver 8.8.8.8 #--- Google 제공
nameserver 8.8.4.4 #--- Google 제공
nameserver 218.38.19.200 #--- name1.youiwe.org
nameserver 218.38.19.114 #--- ns2.youiwe.co.kr
vi /etc/host.conf
multi on
order hosts,bind
Network Service를 재기동 합니다.
service network restart
Internet 접속 여부 확인
ping -c3 google.com
방화벽 설정
### yum install setup setuptool system-config-securitylevel-tui
setup
참고 문헌
Network 설정
CentOS 추가 설치
CentOS 기본 업데이터
yum -y install yum-fastestmirror
yum -y update kernel
yum clean all
yum update
shutdown -r now
lsb_release -a #--- CentOS 버전 확인
yum list | grep kernel
EPEL 다운로드 사이트에서 CentOS 버전에 맞는 설치 파일(epel-release-로 시작하는 파일)을 다운로드하여 설치 합니다.
cd install
#yum install wget
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
yum repolist //--- epel repoistory가 잘 추가되어 있는지 repository 목록을 확인 합니다.
UCloud의 Disk Mount
Software 설치
MySQL
Server version: 5.5.27 MySQL Community Server (GPL)
yum -y install mysql mysql-*
chkconfig --level 2345 mysqld on
MySQL 환경 설정
service mysqld restart
mysqladmin -u root password 'xxxx'
service mysqld stop
cd /var/lib
tar cvf mysql.tar mysql
cd /cloudnas/database
tar xvf /var/lib/mysql.tar
vi /etc/my.cnf
[mysqld](mysqld.md)
init_connect = "SET collation_connection = utf8_general_ci"
init_connect = "SET NAMES utf8"
default-character-set=utf8
character-set-server=utf8
collation-server = utf8_general_ci
datadir=/cloudnas/database/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe](mysqld_safe.md)
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client](client.md)
default-character-set = utf8
[mysqldump](mysqldump.md)
default-character-set = utf8
[mysql](mysql.md)
default-character-set = utf8
MySQL Start
service mysqld start
Apache Http Server
[[CentOS]]에 Apache Http Server를 설치 합니다.
Apache HTTP Server 2.2.3-65.el5.centos
yum -y install httpd httpd-*
chkconfig --level 2345 httpd on
서비스 설정
service httpd stop
vi /etc/httpd/conf/httpd.conf
LanguagePriority ko en ... #--- ko를 맨앞으로 위치 한다.
AddDefaultCharset UTF-8
DirectoryIndex index.php index.html
DocumentRoot "/cloudnas/www/html"
서비스 시작
service httpd start
PHP
PHP 5.3.3-13.el5_8
yum list installed | grep php
yum install php53 php53-*
//--- epel과 같이 섞여 있어 설치가 어려울 때
yum install php php-bcmath php-cli php-common php-dba php-devel php-embedded php-enchant php-fpm php-gd php-imap php-interbase php-intl php-ldap php-mbstring php-mcrypt php-mssql php-mysql php-odbc php-pdo php-pgsql php-process php-pspell php-recode php-snmp php-soap php-tidy php-xml php-xmlrpc php-zts
//--- pcre가 "Unicode properties support"를 지원하지 않아 PDF 생성시 오류가 발생하는 것을 방지
//--- pcretest -C 로 지원 여부 확인
yum install pcre
yum install php-pecl-apc
PHP 환경 설정
mkdir /var/lib/php/upload
chown apache:apache /var/lib/php/upload
vi /etc/php.ini
[PHP](PHP.md)
memory_limit = 256M
upload_max_filesize = 10M
post_max_size = 10M
date.timezone = Asia/Seoul
upload_tmp_dir = "/var/lib/php/upload"
session.save_path = "/var/lib/php/session"
default_charset = "UTF-8"
magic_quotes_gpc = Off
output_buffering = 4096
output_handler = mb_output_handler
[mbstring](mbstring.md)
mbstring.language = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
;mbstring.http_output = pass
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
Utility
jdk 설치
yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-*
Apache Ant version 1.6.5 compiled on January 6 2007
yum -y install ant ant-*
sendmail 8.13.8-2.el 설치
yum -y install sendmail sendmail-*
설치 않음 : subversion 1.6.11-10.el5_8 설치
yum -y install subversion subversion-*
기타 개인적으로 작성한 Script 파일
vi .bashrc
. .bashrc
메일 서버 구축
Mail Server
참고 문헌
사이트 구축
NFS
NFS Server
yum -y install nfs-utils nfs-utils-*
chkconfig --level 3 nfs on
chkconfig --level 3 portmap on
service nfs restart
groupadd -g 60001 nfsgroup
useradd -u 60001 -d /home/nfsuser -m -g nfsgroup nfsuser
mkdir /data
chown nfsuser:nfsgroup /data
chmod 755 /data
vi /etc/exports
/nfsdisk 203.231.11.201(rw,no_root_squash,sync)
exportfs -a
exportfs -v
service nfs restart
NFS Client
groupadd -g 60001 nfsgroup
useradd -u 60001 -d /home/nfsuser -m -g nfsgroup nfsuser
mkdir /data
mount 203.231.11.100:/data /data
//--- 오류 : mount: wrong fs type, bad option, bad superblock on 시 아래 설치
yum install nfs-utils
chkconfig --level 2345 rpcbind on
service rpcbind start
vi /etc/fstab
172.27.177.10:/data /data nfs defaults 1 2
Mount
mount 10.16.31.200:/cloudnas /cloudnas
MySQL Data folder 변경
vi /etc/my.cnf
datadir=/data/mysql
/var/lib/mysql/ 폴더를 /data/mysql/로 복사
/data/mysql/ 폴더에 있는 ib* 파일을 모두 삭제 합니다.
vi /etc/init.d/mysqld
get_mysql_option mysqld datadir "/data/mysql"
MySQL Replication
Master
Slave에서 Master로 접속할 때 사용할 사용자를 생성 합니다.
mysql -uroot -p
grant replication slave on *.* to 'replication003'@'%' identified by 'xxxx';
flush privileges;
vi /etc/my.cnf
[mysqld](mysqld.md)
log-bin=mysql-bin
server-id=1
//--- binlog_do_db = test1 : 동기화할 Database
//--- binlog_ignore_db = notest1 : 동기화에서 제외할 Database
service mysqld restart
데이터 Backup
mysql -uroot -p
flush tables with read lock;
show master status; : File과 Position을 저장 합니다.
mysqldump -uroot -p test1 > test1.sql
###mysqldump --single-transaction --all-databases --extended-insert=FALSE -c -uroot -p -R > db.sql
mysql -uroot -p
unlock tables;
Master 상태 확인
mysql -uroot -p
show master status;
show processlist;
Slave
vi /etc/my.cnf
[mysqld](mysqld.md)
log-bin=mysql-bin
log-slave-update
server-id=2
master-host=clouddb001.smartprocess.co.kr
master-port = 3306
master-user = replication
master-password = xxxx
master-connect-retry = 60
//--- replicate-do-db = test1
//--- replicate-ignore-db = notest1
service mysqld restart
데이터 Restore
mysql -uroot -p
slave stop
mysql -uroot -p test1 < test1.sql
### mysql -uroot -p < db.sql
### rsync -av /var/lib/mysql* --exclude=*bin* --exclude=ib* --rsh='ssh ' 211.115.69.112:/var/lib/mysql
mysql -uroot -p
###reset slave;
###CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000219',MASTER_LOG_POS=2428;
//--- change master to master_log_file = '~', master_log_pos = ~;
slave start
Slave 상태 확인
mysql -uroot -p
show master status
show slave status;
show slave status\G ;
//--- "Waiting for master to send event" 메시지가 있으면 정상
show processlist;
//--- slave start
//--- change master to master_log_file = '~', master_log_pos = ~;
//--- slave stop
Slave에서 백업을 할 경우
mysqldump -uuser -p --delete-master-logs > xxxxxx.sql
Dual Master
Master Server 1
mysql -uroot -p mysql
grant replication slave on *.* to 'replication003'@'%' identified by '~';
vi /etc/my.cnf
log-bin=mysql-bin
server-id=4
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host=clouddb003.smartprocess.co.kr
master-port = 3306
master-user = replication004
master-password = ~
master-connect-retry = 60
Master Server 2
mysql -uroot -p mysql
grant replication slave on *.* to 'replication004'@'%' identified by '~';
vi /etc/my.cnf
log-bin=mysql-bin
server-id=4
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
master-host=clouddb003.smartprocess.co.kr
master-port = 3306
master-user = replication003
master-password = ~
master-connect-retry = 60
MySQL Replication 복구
Replication 상태 확인
Master
mysql -uroot -p mysql
show master status; ###--- File, Position
Slave
mysql -uroot -p mysql
show slave status\G;
Slave_IO_State : "Waiting for master to send event"
Master_Log_File : Master의 File과 일치
Read_Master_Log_Pos : Master Position과 일치
Slave_IO_Running : Yes
Slave_SQL_Running : Yes
Relay_Log_Pos 과 Relay_Log_Space 이 일치
Read_Master_Log_Pos 과 Exec_Master_Log_Pos 이 일치
Last_Errno와 Last_Error가 있으면 replication이 중단된 상태임
자동 복구
Slave
mysql -uroot -p mysql
stop slave;
reset slave;
start slave;
Slave : 오류가 발생한 query문만 skip하여 복구
mysql -uroot -p mysql
set global sql_slave_skip_counter=1;
start slave;
전형적인 복구 방법
Master에서 Database 백업
mysql -uroot -p mysql
flush tables with read lock;
show master status; ### File과 Position을 저장 합니다.
exit;
###--- 전체 DB 백업
mysqldump --single-transaction --all-databases --extended-insert=FALSE -c -uroot -p -R > allDB.sql
###--- 하나의 DB 백업
mysqldump -uroot -p ${DATABASE} > ${DATABASE}.sql
###--- 전체 DB 파일 백업
### rsync -av /usr/local/mysql/* --exclude=*bin* --exclude=ib* --exclude=xewasdb* --exclude=relay* --exclude=master.info ***.***.***.***(Host IP)::R/usr/local/mysql/mysql_data/
mysqldump --master-data=2 ${DATABASE} > ${DATABASE}.sql
### mysqldump --add-drop-table --master-data --quick -u root -p my_database > my_database.sql
mysql -uroot -p mysql
unlock tables;
exit;
Slave에서 Database 복구
mysql -uroot -p mysql
stop slave;
drop database ${DATABASE};
create database ${DATABASE};
exit;
mysql -uroot -p ${DATABASE} < ${DATABASE}.sql
mysql -uroot -p mysql
change master to master_log_file='mysql-bin.000044', master_log_pos=132059667;
start slave;
show slave status\G;
### Slave_IO_Running: Yes
### Slave_SQL_Running: Yes
### Last_Errno
### Last_Error
exit;
MySQL Replication 복구 참고
http://blog.naver.com/PostView.nhn?blogId=groge&logNo=70129401102
http://blog.naver.com/PostView.nhn?blogId=sylphjm&logNo=130134770882
Apache SSL 설정
vi /etc/httpd/conf/httpd.conf
DocumentRoot "/~/www/html"
yum install mod_ssl
vi /etc/httpd/conf.d/ssl.conf
ServerName cloud.smartprocess.co.kr:443
SSLCertificateFile STAR.smartprocess.co.kr.cer
SSLCertificateKeyFile smartprocess_ssl.key
SSLCertificateChainFile Thawte_SSL_CA_bundle.crt
Apache 실행시 비밀번호 물어보는 것 삭제
cp smartprocess_ssl.key smartprocess_ssl.key_org
openssl rsa -in smartprocess_ssl.key_org -out smartprocess_ssl.key
Monitoring과 Turning
UCloud 오류 및 조치
이미지로 서버 추가시 주의 사항
vi /etc/fstab 에서 서버에 mount한 디스크에 대한 정보를 삭제한 후에 이미지를 생성하여 합니다.
그렇지 않으면 추가된 서버가 정상적으로 UCloud에서 인식이 안되어 부팅 또는 Network 설정을 할 수 없음
### dev/DataVG/data /data ext3 defaults 1 2
KT UCloud 관리자 가이드
서버 신청
[700px](File:UCloud get server001.png.md)
[700px](File:UCloud get server002.png.md)
[700px](File:UCloud get server003.png.md)
참고 문헌
http://developer.ucloudbiz.olleh.com/
[[Category:Cloud|Category:Cloud]]
분류: CentOS