注:每个Hypervisor上,都要保证【/mnt】目录为空,否则,可能会出现InsufficientServerCapacityException (服务器资源不足)的报错。
cloud-agent-2.perofu.com和cloud-agent-1.perofu.com的安装步骤一样,即,所有cloudstack-agent节点的安装步骤均一样。
下面以cloud-agent-1.perofu.com进行演示。
【cloud-agent-1.perofu.com】
hostname cloud-agent-1.perofu.com vi /etc/sysconfig/network HOSTNAME=cloud-agent-1.perofu.com vi /etc/hosts 127.0.0.1 cloud-agent-1.perofu.com 172.22.2.76 cloud-server.perofu.com 172.22.2.87 cloud-agent-1.perofu.com 172.22.2.100 cloud-agent-2.perofu.com |
vi /etc/sysconfig/selinux SELINUX=disabled setenforce 0 service iptables stop chkconfig iptables off yum install ntpdate -y echo '#ntpd' >> /var/spool/cron/root echo "10 5 * * * /usr/sbin/ntpdate ntp.api.bz &> /dev/null" >> /var/spool/cron/root echo '' >> /var/spool/cron/root service ntpd stop chkconfig ntpd off /usr/sbin/ntpdate ntp.api.bz &> /dev/null |
V4.4
vi /etc/yum.repos.d/cloudstack.repo [cloudstack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/rhel/4.4/ enabled=1 gpgcheck=0 yum -y install cloudstack-agent |
V3.0
tar -axf CloudStack-oss-3.0.2-1-rhel6.2.tar.gz -C /usr/local/src/ cd /usr/local/src/CloudStack-oss-3.0.2-1-rhel6.2/ ./install.sh A |
“A”------> 安装 CloudStack Agent 软件, CloudStack客户端。
grep -E -o 'vmx|svm' /proc/cpuinfo |
VMX:它是Intel处理器虚拟机技术标志;
SVM:它是AMD处理器虚拟机技术的标志。
注:linux发行版本必须在64bit环境中才能使用KVM。
[root@localhost ~]# grep -E -o 'vmx|svm' /proc/cpuinfo vmx |
yum源使用的是Centos 6.4的光盘镜像。
yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v libguestfs-tools |
vnc默认的监听127.0.0.1。
因为,在创建虚拟机时,需要连接vnc,去手动安装新系统。
cp /etc/libvirt/qemu.conf /etc/libvirt/qemu.conf.bak vi /etc/libvirt/qemu.conf vnc_listen=0.0.0.0 |
vi /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 tcp_port = "16509" auth_tcp = "none" mdns_adv = 0 vi /etc/sysconfig/libvirtd LIBVIRTD_ARGS="--listen" service libvirtd restart chkconfig libvirtd on |
如果没有输出信息,则表示没有加载成功。
lsmod | grep kvm |
[root@localhost ~]# lsmod | grep kvm kvm_intel 53484 0 kvm 316506 1 kvm_intel |
-all关闭的也会显示。
virsh list --all |
[root@localhost ~]# virsh list --all Id Name State ---------------------------------------------------- |
虚拟机的网卡名称是:cloudbr0,不要自作聪明,用了br0,报了一个下午的错。
yum install -y tunctl cat << EOF > /etc/sysconfig/network-scripts/ifcfg-cloudbr0 DEVICE=cloudbr0 TYPE=Bridge BOOTPROTO=static IPV6INIT=no ONBOOT=yes IPADDR=172.22.2.87 NETMASK=255.255.0.0 GATEWAY=172.22.1.3 DNS1=8.8.8.8 DELAY=0 EOF
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/bak_ifcfg-eth0 cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none BRIDGE=cloudbr0 IPV6INIT=no EOF
/etc/init.d/network restart
#查看桥接网络 brctl show |
[root@localhost CloudStack-oss-3.0.2-1-rhel6.2]# ifconfig cloudbr0 Link encap:Ethernet HWaddr 00:0C:29:40:7F:1D inet addr:172.22.2.87 Bcast:172.22.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe40:7f1d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:226 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:18457 (18.0 KiB) TX bytes:3116 (3.0 KiB)
eth0 Link encap:Ethernet HWaddr 00:0C:29:40:7F:1D inet6 addr: fe80::20c:29ff:fe40:7f1d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:175448 errors:0 dropped:0 overruns:0 frame:0 TX packets:94709 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:191337793 (182.4 MiB) TX bytes:7210912 (6.8 MiB) |
这里也可以省略,只是在初始化的时候需要手动输入cloudstack-management的ip。
V4.4
vi /etc/cloudstack/agent/agent.properties # cloudstack管理服务器地址 host= 172.22.2.76 |
V3.0
vi /etc/cloud/agent/agent.properties # cloudstack管理服务器地址 host= 172.22.2.76 |
vi /etc/idmapd.conf Domain = perofu.com |
一路回车,即可。
V4.4
cloudstack-setup-agent |
V3.0
cloud-setup-agent |
[root@cloud-agent-1 ~]# cloud-setup-agent Welcome to Cloud Agent Setup: Please input the Management Server Name/IP:[172.22.2.76] Please input the Zone Id:[default] Please input the Pod Id:[default] Please input the Cluster Id:[] Please choose which network used to create VM:[br0] Starting to configure your system: Configure SElinux ... [OK] Configure Network ... [OK] Configure Libvirt ... [OK] Configure Firewall ... [OK] Configure cloudAgent ... [OK] Cloud Agent setup is Done! |
Libvirt报错:
[root@cloud-agent-1 ~]# cloud-setup-agent Welcome to Cloud Agent Setup: Please input the Management Server Name/IP:[172.22.2.76] Please input the Zone Id:[default] Please input the Pod Id:[default] Please input the Cluster Id:[] Please choose which network used to create VM:[br0] Starting to configure your system: Configure SElinux ... [OK] Configure Network ... [OK] Configure Libvirt ... [Failed] Traceback (most recent call last): File "/usr/bin/cloud-setup-agent", line 112, in <module> syscfg.config() File "/usr/lib/python2.6/site-packages/cloudutils/syscfg.py", line 76, in config raise CloudInternalException() TypeError: __init__() takes exactly 2 arguments (1 given) |
解决:
Libvirt启动失败,端口没看到。
[root@localhost CloudStack-oss-3.0.2-1-rhel6.2]# /etc/init.d/libvirtd restart Stopping libvirtd daemon: [FAILED] Starting libvirtd daemon: libcgroup initialization failed: Cgroup is not mounted [FAILED] yum list libcgroup -y vi /etc/cgconfig.conf group virt { cpu { cpu.shares = 9216; } } /etc/init.d/cgconfig restart /etc/init.d/libvirtd restart chkconfig cgconfig on |
这里,不需要手动启动cloud-agent,当在manager上创建主机时,manager会自动启动cloud-agent的。
/etc/init.d/cloud-agent start |
启动失败啊.
2014-09-29 05:54:34,892 INFO [cloud.agent.Agent] (main:null) id is 2014-09-29 05:54:35,044{GMT} INFO [resource.virtualnetwork.VirtualRoutingResource] (main:) VirtualRoutingResource _scriptDir to use: scripts/network/domr/kvm 2014-09-29 05:54:35,044 INFO [resource.virtualnetwork.VirtualRoutingResource] (main:null) VirtualRoutingResource _scriptDir to use: scripts/network/domr/kvm 2014-09-29 05:54:35,050{GMT} INFO [resource.virtualnetwork.VirtualRoutingResource] (main:) ipassoc.sh found in /usr/lib64/cloud/agent/./scripts/network/domr/ipassoc.sh 2014-09-29 05:54:35,050 INFO [resource.virtualnetwork.VirtualRoutingResource] (main:null) ipassoc.sh found in /usr/lib64/cloud/agent/./scripts/network/domr/ipassoc.sh 2014-09-29 05:54:35,649{GMT} INFO [resource.computing.LibvirtComputingResource] (main:) agent.properties found at /etc/cloud/agent/agent.properties 2014-09-29 05:54:35,649 INFO [resource.computing.LibvirtComputingResource] (main:null) agent.properties found at /etc/cloud/agent/agent.properties 2014-09-29 05:54:35,657{GMT} INFO [cloud.agent.Agent] (main:) Agent [id = new : type = LibvirtComputingResource : zone = default : pod = default : workers = 5 : host = 172.22.2.76 : port = 8250 2014-09-29 05:54:35,657 INFO [cloud.agent.Agent] (main:null) Agent [id = new : type = LibvirtComputingResource : zone = default : pod = default : workers = 5 : host = 172.22.2.76 : port = 8250 2014-09-29 05:54:35,665{GMT} INFO [utils.nio.NioClient] (Agent-Selector:) Connecting to 172.22.2.76:8250 2014-09-29 05:54:35,665 INFO [utils.nio.NioClient] (Agent-Selector:null) Connecting to 172.22.2.76:8250 2014-09-29 05:54:36,096{GMT} INFO [utils.nio.NioClient] (Agent-Selector:) SSL: Handshake done 2014-09-29 05:54:36,096 INFO [utils.nio.NioClient] (Agent-Selector:null) SSL: Handshake done 2014-09-29 05:54:36,312{GMT} INFO [cloud.serializer.GsonHelper] (Agent-Handler-1:) Default Builder inited. 2014-09-29 05:54:36,312 INFO [cloud.serializer.GsonHelper] (Agent-Handler-1:null) Default Builder inited. 2014-09-29 05:54:36,588{GMT} ERROR [cloud.agent.Agent] (Agent-Handler-2:) Not allowed to connect to the server: java.lang.IllegalArgumentException: Host 172.22.2.87 sent incorrect data center: default 2014-09-29 05:54:36,588 ERROR [cloud.agent.Agent] (Agent-Handler-2:null) Not allowed to connect to the server: java.lang.IllegalArgumentException: Host 172.22.2.87 sent incorrect data center: default 2014-09-29 05:54:36,591{GMT} INFO [cloud.agent.Agent] (AgentShutdownThread:) Stopping the agent: Reason = sig.kill 2014-09-29 05:54:36,591 INFO [cloud.agent.Agent] (AgentShutdownThread:null) Stopping the agent: Reason = sig.kill |
一定要保证/mnt目录没有被使用,且目录为空,否则CloudStack无法对其挂载Primary Storage,新建实例,可能会失败,除非你有多个agent,/mnt已有的数据,请提前保存好。
umount /mnt rm -rf /mnt/* |
到此cloudstack-agent就配置完成了,现在的cloudstack-agent可以在创建区域时加入,也可以在创建完区域后,手动加入,后面均有介绍。