centos 7.2部署cloudstack4.9 ceph0.94


版本:
系統:centos 7.2
ceph : 0.94
cloudstack : 4.92
mysql :5.72
 
6台機器:
192.168.1.212 :cloudstack-management  ,monitor
192.168.1.165 :storage
192.168.1.183 :cloudstack-agent,monitor,osd
192.168.1.127 :cloudstack-agent,monitor,osd
192.168.1.151 :cloudstack-agent,osd
192.168.1.249 :cloudstack-agent,osd
 
系統環境:
一定要關閉selinux,在/etc/selinux/config修改
iptables,firewalld 實驗可以關掉,線上需要添加規則
安裝系統的時候最好把Development Tools安裝上去
修改主機名如下,其他節點類似
 
hostnamectl set hostname='mgmt.ptecloud.com'
 
因為沒有dns所以修改hosts
 

cat >> /etc/hosts << EOF

192.168.1.212 mgmt.ptecloud.com  

192.168.1.165 secondary.ptecloud.com

192.168.1.183 nodea1.ptecloud.com

192.168.1.249 nodeb1.ptecloud.com

192.168.1.127 nodeb2.ptecloud.com

192.168.1.151 nodea2.ptecloud.com

EOF

上面沒有添加短域名,通過sed修改,修改完成之后使用hostname --fqdn
 
sed -ri 's/(\<[[:alpha:]].*\>).ptecloud.com/& \1/g' /etc/hosts
 
安裝數據庫
 
rpm -ivh mysql57-community-release-el7-11.noarch.rpm   ##在官網上下載的yum倉庫安裝包
repo倉庫如下,如果想用哪個把enabled改為1就可以,不用改為0
 
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
[mysql-cluster-7.6-community]
name=MySQL Cluster 7.6 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
 
 
下面就是安裝
 
yum clean all
yum install -y mysql-community-server
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log  ##5.7 初始密碼在mysqld.log中
mysql_secure_installation
cat >> /etc/my.cnf <<EOF
binlog_ignore_db=mysql
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
binlog-format = 'ROW
EOF
systemctl restart mysqld
 
mysql安裝完成,可以進入mysql看下是否正常
 
部署:ceph
ceph中文網上有快速部署步驟可以借鑒
ceph組件較之前的文件系統有所區別,建議先學習查看一下
 
ceph部署環境
 
sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
 
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
 
 
配置ceph-deploy的安裝目錄
 
[ceph-deploy]
name=ceph-deploy
baseurl=https://mirrors.aliyun.com/ceph/archive/rpm-firefly/el7/noarch/
enabled=1
gpgcheck=0
 
然后安裝ceph-deploy
 
yum update && yum install ceph-deploy
 
配置ntp同步;
如果不能連接公網的話可以自己搭建一個ntp服務器,能連接公網的話可以創建一個計划任務,沒5分鍾同步一次
 
crontab -e
*/5 * * * * /usr/sbin/ntpdate 1.asia.pool.ntp.org &> /dev/null
*/5 * * * * /usr/sbin/hwclock -w
 
在所有節點上添加openssh-server
 
yum install openssh-server
 
創建cephuser
 
官網建議使用不使用root用戶安裝ceph
所以在各節點上創建用戶:
 
useradd ceph-user && echo "ceph-user" | passwd --stdin ceph-user
 
修改sudo權限
 
echo "ceph-user ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ceph-user
chmod 0440 /etc/sudoers.d/ceph-user
 
設置免密碼ssh登入
 
在ceph-user賬號下執行
 
ssh-keygen     ## 全部回車
ssh-copy-id secondary
ssh-copy-id nodea1
ssh-copy-id nodea2
ssh-copy-id nodeb1
ssh-copy-id nodeb2
 
在ceph-user用戶下修改~/.ssh/config文件,可以免delpoy的時候指定用戶,這邊config文件沒有的話,創建之后注意下權限,后面可能會有報錯
 
Host secondary
   Hostname secondary
   User ceph-user
Host nodea1
   Hostname nodea1
   User ceph-user
Host nodea2
   Hostname nodea2
   User ceph-user
Host nodeb1
   Hostname nodeb1
   User ceph-user
Host nodeb2
   Hostname nodeb2
   User ceph-user
 
iptables或者防火牆一定要注意還有selinux,這個也是。
 
部署ceph
 
su - ceph-user
mkdir my-cluster
cd my-cluster/
ceph-deploy new mgmt nodea1 nodeb2
 
在這個文件夾下會生成兩個文件,在配置文件中添加
 
osd pool default size = 2
public network = {ip-address}/{netmask}
 
ceph-deploy中會自動安裝ceph的程序,可能會提升報錯,可以看下安裝的包的名稱和版本,在各大yum源鏡像中找到對應的版本自行安裝。我部署的這個是ceph0.94,對應的yum源如下
 
[ceph-install]
name=ceph-install
baseurl=https://mirrors.aliyun.com/ceph/rpm/el7/x86_64/
enabled=1
gpgcheck=0
 
每個節點都需要添加,ceph-deploy需要安裝的是三個包,可以在ceph-deploy的輸出中看到
 
yum -y install yum-plugin-priorities
yum install -y epel-release
yum install -y ceph ceph-radosgw
 
在每個節點安裝完成后,在主部署節點執行,注意如果一個節點你只想做監控節點也是要安裝的
 
ceph-deploy install mgmt nodea1 nodea2 nodeb1 nodeb2
 
初始化換monitor,收集秘鑰,執行完成后可以看到有四個秘鑰換
 
ceph-deploy mon create-initial
 
下面是添加osd,我這邊沒有足夠的條件使用硬盤做osd節點,用的是目錄,先創建好目錄,先准備osd節點
 
ceph-deploy osd prepare nodea1:/var/ceph nodea2:/var/ceph nodeb1:/var/ceph nodeb2:/var/ceph
 
激活osd節點
 
ceph-deploy osd activate nodea1:/var/ceph nodea2:/var/ceph nodeb1:/var/ceph nodeb2:/var/ceph
 
用 ceph-deploy 把配置文件和 admin 密鑰拷貝到管理節點和 Ceph 節點,這樣你每次執行 Ceph 命令行時就無需指定 monitor 地址和 ceph.client.admin.keyring 了。
 
ceph-deploy admin mgmt nodea1 nodea2 nodeb1 nodeb2
 
確保對秘鑰環有權限
 
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
 
檢查集群健康
 
ceph health
 
下面開始安裝cloudstack
我這邊使用的是4.9版本,因為4.10起不來,無法解決所以降版本使用4.92,yum源如下
 
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos7/4.9/
enabled=1
gpgcheck=0
 
cloudstack官網上有安裝步驟,可以參考
 
安裝管理節點
 
yum install -y cloudstack-management
 
安裝數據庫連接器
 
[mysql-connectors-community]
name=MySQL Community connectors
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/$releasever/$basearch/
enabled=1
gpgcheck=1
 
 
yum install mysql-connector-python
 
初始化數據庫
 
cloudstack-setup-databases cloud:password@localhost --deploy-as=root:passwd
cloudstack-setup-databases cloud:Cloud_0510@localhost --deploy-as=root:123456    ##5.7是密碼等級比較高所以密碼設置的復雜一些
安裝完成后會提示有successfully
 
創建存儲
在規划的存儲分區下
 
mkdir -p /var/ceph/primary
mkdir /var/ceph/secondary
yum install -y nfs-utils
 
vim /etc/exports
/var/ceph/primary *(rw,async,no_root_squash)
/var/ceph/secondary *(rw,async,no_root_squash)
 
vim /etc/sysconfig/nfs
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
 
systemctl restart rpcbind
systemctl restart nfs
systemctl enable rpcbind
systemctl enable nfs
 
因為我這邊關閉了iptables,如果需要的話,添加相應的規則,復制官網的如下
 
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
 
導入系統虛擬機模板,官網上有 http://cloudstack.apt-get.eu/systemvm/,下載對應的模板,4.9到4.6 用4.6 那個就可以,4.10的需要用4.10的模板,啟動失敗的原因,懷疑為模板版本不同導致。
 
mount -t nfs 192.168.1.165:/var/ceph/secondary /mnt/secondary/
cd /usr/share/cloudstack-common/scripts/storage/secondary/
./cloud-install-sys-tmplt -m /mnt/secondary/ -f /root/cloudstack/systemvm64template-4.6.0-kvm.qcow2.bz2 -h kvm -F  ##安裝成功后Successfully提示
 
啟動cloudstack
 
cloudstack-setup-management --tomcat7    ###初始化管理節點   這邊不加--tomcat7 會報錯,需要生成一個軟連接。
systemctl resetart management
 
安裝agent節點
 
hostname --fqdn    ##主機名是否生效
yum install cloudstack-agent
vim /etc/libvirt/qemu.conf   #添加下面內容
vnc_listen=0.0.0.0
 
vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0
 
vim /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"
 
systemctl restart libvirtd
 
lsmod | grep kvm                          ##查看內核是否加載kvm模塊
kvm_intel              55496  0
kvm                  337772  1 kvm_intel
 
 
節點開啟iptables的注意添加響應規則
初始化agent
 
cloudstack-setup-agent
填入management的ip
zone、pod、cluster都填1
 
登入配置cloudstack
初始化用戶名密碼是 admin/password
里面會有初始化zone、pod、來賓網絡、cluster、選擇hypervisor、添加主機、添加主存儲、添加二級存儲等  
網關就填物理網絡的網關,提供點和來賓的ip地址池不能重合,添加主機的用戶名和密碼最好是root的后面的存儲一般是nfs的。
 
添加ceph為主存儲
因為我的osd比較少,所以用的gp比較少
 
ceph osd pool create cloudstack 128 128
創建用戶
 
ceph auth get-or-create client.cloudstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cloudstack'
 
添加主存儲,注意提供程序選擇DefaultPrimary
協議選擇 :”rbd”
Rados monitor 選擇 ceph 集群的任意節點即可,最好填寫 monitor 選舉中的 leader
Rados Pool 選擇剛才新建的池: cloudstack
Rados User 選擇剛才新建的用戶 : cloudstack
Rados Sercert 選擇剛才輸出的 key
 
 
 
 ######
部署的時候遇到一些坑,多看看日志分析。
mysql 5.7  group by 有報錯
http://www.cnblogs.com/jim2016/p/6322703.html
需要過這個問題,是在cloudstackweb頁面配置完成啟動的時候,一直在創建系統虛擬機階段,日志發現一直有報db錯誤,
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cloud.i.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
按照上面博客的內容,重置變量kill掉數據庫中cloudstack的processlist,日志報錯消失。
2017-11-23 13:50:32,508 ERROR [c.c.c.ClusterManagerImpl] (Cluster-Heartbeat-1:ctx-f54aed32) (logid:c80dbc8f) Unexpected exception in cluster heartbeat
 這個報錯可能也是於數據庫相關,重啟數據庫后恢復正常。
ceph是高度依賴ntp的,時間不同步會有報錯,進行問ntp同步后,重啟mon,就會恢復正常。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM