UCloud biz를 정리 합니다.


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;"|Manage |
  • Apache HTTP Server
  • Apache Tomcat
  • 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 화면이 뜨면서 제대로 설치가 됩니다.
    • VirtualBox Network 설정 참조
    • 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.0
        • DHCP 서버
          :서버 사용함 선택 :서버 주소 : 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

  • 참고 문헌


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



[Linux Storage](Storage.md#Linux_Storage.md)

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 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

    client default-character-set = utf8

    mysqldump default-character-set = utf8

    mysql 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" <Directory "/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 복구 참고


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


튜닝#Monitoring


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/](http://developer.ucloudbiz.olleh.com/)
[[Category:Cloud|Category:Cloud]]
분류: [CentOS](분류_CentOS.md)
공유하기