레이블이 Eucalyptus인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Eucalyptus인 게시물을 표시합니다. 모든 게시물 표시

2015년 4월 5일 일요일

Ecalyptus block storage integration with Ceph

This week, my purpose was to deploy Ceph to be used block storage of Eucalyptus. I created three machines, each machine had 4 X 10G - one for OS, three for OSD.



As see the above picture, three machines were added for Ceph storage and I also made Storage Controller node separated from Cluster Controller node.

When I was deploying these, I encountered two problems.
  • Ceph was in HEALTH_WARN - 192 pgs incomplete / 192 pgs stuck inactive / 192 pgs stuck unclean
  • Eucalyptus Storage was in NOTREADY

I created just one cluster, after that, I validated the ceph cluster. It showed HEALTHY_WARN.
ceph@ceph-node1:~/cluster01$ ceph osd tree
# id    weight  type name       up/down reweight
-1      0       root default
-2      0               host ceph-node1
0       0                       osd.0   up      1
1       0                       osd.1   up      1
2       0                       osd.2   up      1
-3      0               host ceph-node2
3       0                       osd.3   up      1
4       0                       osd.4   up      1
5       0                       osd.5   up      1
-4      0               host ceph-node3
6       0                       osd.6   up      1
7       0                       osd.7   up      1
8       0                       osd.8   up      1

ceph@ceph-node1:~/cluster01$ ceph status
    cluster 565bb65e-775d-449d-8d57-f36c7cf4a1d5
     health HEALTH_WARN 192 pgs incomplete; 192 pgs stuck inactive; 192 pgs stuck unclean
     monmap e1: 1 mons at {ceph-node1=10.10.10.30:6789/0}, election epoch 2, quorum 0 ceph-node1
     osdmap e28: 9 osds: 9 up, 9 in
      pgmap v53: 192 pgs, 3 pools, 0 bytes data, 0 objects
            296 MB used, 45683 MB / 45980 MB avail
                 192 incomplete
Whenever I tried to run command, I couldn't get the result.
ceph@ceph-node1:~/cluster01$ rados lspools
data
metadata
rbd
ceph@ceph-node1:~/cluster01$ rados -p metadata ls
Because of in-completed pgs, following requested becomes slow requests and query commands hang.

Meanwhile, I got a hint from the blog "Ceph, Small Disks and Pgs Stuck Incomplete". It said that If the drive is small enough, OSD weights can result in 0.00. My all OSD's weights were zero. According to the site, weights can be non-zero if it has at least 10G. Although HDD had 10GB each (10GB = 0.01), half partitioned as ceph journal. Aa s result, my OSD for storing data only had 5G each and it was 0.00

So, I manually updated.
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.0 1
reweighted item id 0 name 'osd.0' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.1 1
reweighted item id 1 name 'osd.1' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.2 1
reweighted item id 2 name 'osd.2' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.3 1
reweighted item id 3 name 'osd.3' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.4 1
reweighted item id 4 name 'osd.4' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.5 1
reweighted item id 5 name 'osd.5' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.6 1
reweighted item id 6 name 'osd.6' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.7 1
reweighted item id 7 name 'osd.7' to 1 in crush map
ceph@ceph-node1:~/cluster01$ ceph osd crush reweight osd.8 1
reweighted item id 8 name 'osd.8' to 1 in crush map

ceph@ceph-node1:~/cluster01$ ceph osd tree
# id    weight  type name       up/down reweight
-1      9       root default
-2      3               host ceph-node1
0       1                       osd.0   up      1
1       1                       osd.1   up      1
2       1                       osd.2   up      1
-3      3               host ceph-node2
3       1                       osd.3   up      1
4       1                       osd.4   up      1
5       1                       osd.5   up      1
-4      3               host ceph-node3
6       1                       osd.6   up      1
7       1                       osd.7   up      1
8       1                       osd.8   up      1

# Status is in HEALTH_OK
ceph@ceph-node1:~/cluster01$ ceph status
    cluster 565bb65e-775d-449d-8d57-f36c7cf4a1d5
     health HEALTH_OK
     monmap e1: 1 mons at {ceph-node1=10.10.10.30:6789/0}, election epoch 2, quorum 0 ceph-node1
     osdmap e56: 9 osds: 9 up, 9 in
      pgmap v122: 192 pgs, 3 pools, 0 bytes data, 0 objects
            316 MB used, 45664 MB / 45980 MB avail
                 192 active+clean

# Create pools for volumes and snapshots
ceph@ceph-node1:~/cluster01$ ceph osd pool create euca-volumes 128 128
ceph@ceph-node1:~/cluster01$ ceph osd pool create euca-snapshots 128 128

ceph@ceph-node1:~/cluster01$ ceph osd pool set euca-volumes size 2
set pool 4 size to 2
ceph@ceph-node1:~/cluster01$ ceph osd pool set euca-snapshots size 2
set pool 5 size to 2 
Ceph's status changed to HEALTH_OK. There were no more hang for commands.

Next, I am going to explain how I solved NOTREADY state for Storage service. I had let this problem continued, so far, I focused on launching VMs, I didn't need to attach volumes or snapshots.

However, It's time to make it work. I always got the same result by running euca-describe-services.
[root@euca-clc ~]# euca-describe-services --all -E
...
SERVICE storage                 cluster01       sc-euca-clc             NOTREADY        25      http://10.10.10.170:8773/services/Storage       arn:euca:eucalyptus:cluster01:storage:sc-euca-clc/
ERROR   storage                 cluster01       sc-euca-clc             Failed to lookup host 10.10.10.170 for service arn:euca:eucalyptus:cluster01:storage:sc-euca-clc/.  Current hosts are: [Host 192.168.1.169 #25 /192.168.1.169 coordinator=192.168.1.169 booted db:synched(synced) dbpool:ok started=1428187521637 [/10.10.10.169, /192.168.1.169], Host 192.168.1.170 #25 /192.168.1.170 coordinator=192.168.1.169 booted nodb started=1428187908203 [/10.10.10.170, /192.168.1.170]]
SERVICEEVENT    1ea068a2-83ea-4007-a8aa-33bd1befa68d    arn:euca:eucalyptus:cluster01:storage:sc-euca-clc/
SERVICEEVENT    1ea068a2-83ea-4007-a8aa-33bd1befa68d    ERROR
SERVICEEVENT    1ea068a2-83ea-4007-a8aa-33bd1befa68d    Sun Apr 05 07:53:47 KST 2015

I added storage controller on the private network (10.10.10.0/24). I found that coordinator - I wasn't sure what it was - was running on the different network (192.168.1.0/24). I suddenly thought how it would be when I added storage controller on the same network.
[root@euca-clc ~]# euca_conf --register-sc --partition cluster01 --host 192.168.1.171 --component sc-euca-sc
SERVICE storage         cluster01       sc-euca-sc      BROKEN          29      http://192.168.1.171:8773/services/Storage       arn:euca:eucalyptus:cluster01:storage:sc-euca-sc/
After a while, I checked it again.
[root@euca-clc ~]# euca-describe-services --all
..
SERVICE storage                 cluster01       sc-euca-sc              ENABLED         62      http://192.168.1.171:8773/services/Storage      arn:euca:eucalyptus:cluster01:storage:sc-euca-sc/
SERVICE cluster                 cluster01       cc-euca-cc              ENABLED         62      http://10.10.10.170:8774/axis2/services/EucalyptusCC    arn:euca:eucalyptus:cluster01:cluster:cc-euca-cc/
SERVICE node                    cluster01       10.10.10.178            ENABLED         62      http://10.10.10.178:8775/axis2/services/EucalyptusNC    arn:euca:bootstrap:cluster01:node:10.10.10.178/
...
Finally, I got it working.

The next steps will be configuring properties to use Ceph and The following is a site for well-explaining next steps - https://johnpreston78.wordpress.com/2015/02/21/eucalyptus-and-ceph-for-elastic-block-storage

2015년 3월 29일 일요일

Troubleshoot - Eucalyptus Instances do not get private IP address

I prepare 3 VMs on my VMware Workstation for testing Eucalyptus. These are Cloud Controller(CLC), Cluster Controller(CC) and Node Cluster(NC).

I installed components like the following:

  1. S/W: CentOS 6.6, Eucalyptus 4.1.0, euca2ools 3.2.0
  2. Network Mode: Managed(NOVLAN)
  3. IPs: Public 192.168.1.0/24, Private 10.10.10.0/24, Virtual Network: 172.16.0.0/16
DHCP daemon (yellow) installed on CC node and VMs of NC node had to get IP address from this daemon if don't have the problem.

I created VM but failed to get IP address, specifically, the VM was able to get IP without turning off firewall service on NC node.

I printed console when didn't get IP
[root@euca-clc ~]# euca-get-console-output i-9521eb03
...
Cloud-init v. 0.7.4 running 'init-local' at Tue, 24 Mar 2015 22:00:23 +0000. Up 60.61 seconds.
Starting cloud-init: /usr/lib/python2.6/site-packages/cloudinit/url_helper.py:40: UserWarning: Module backports was already imported from /usr/lib64/python2.6/site-packages/backports/__init__.pyc, but /usr/lib/python2.6/site-packages is being added to sys.path
  import pkg_resources
Cloud-init v. 0.7.4 running 'init' at Tue, 24 Mar 2015 22:00:25 +0000. Up 61.88 seconds.
ci-info: +++++++++++++++++++++++Net device info+++++++++++++++++++++++
ci-info: +--------+------+-----------+-----------+-------------------+
ci-info: | Device |  Up  |  Address  |    Mask   |     Hw-Address    |
ci-info: +--------+------+-----------+-----------+-------------------+
ci-info: |   lo   | True | 127.0.0.1 | 255.0.0.0 |         .         |
ci-info: |  eth0  | True |     .     |     .     | d0:0d:dc:bc:09:70 |
ci-info: +--------+------+-----------+-----------+-------------------+
ci-info: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Route info failed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

The root cause was that I did wrong firewall settings on NC node. The important thing was to add FOWARD rules of virtual network (172.16.0.0/16).
 
# Add FORWARD rules
[root@euca-nc01 ~]# iptables --append FORWARD  --proto udp --sport 68 --dport 67 --jump ACCEPT 
[root@euca-nc01 ~]# iptables --append FORWARD  --source 172.16.0.0/16 --jump ACCEPT 
[root@euca-nc01 ~]# iptables --append FORWARD  --destination 172.16.0.0/16 --jump ACCEPT 

# Recreate VM  
[root@euca-clc ~]# euca-run-instances $image_id --instance-type m1.small --key euca-default --group default
[root@euca-clc ~]# euca-get-console-output $ins_id
...
Starting cloud-init: /usr/lib/python2.6/site-packages/cloudinit/url_helper.py:40: UserWarning: Module backports was already imported from /usr/lib64/python2.6/site-packages/backports/__init__.pyc, but /usr/lib/python2.6/site-packages is being added to sys.path
  import pkg_resources
Cloud-init v. 0.7.4 running 'init-local' at Sun, 29 Mar 2015 07:56:50 +0000. Up 38.13 seconds.
Starting cloud-init: /usr/lib/python2.6/site-packages/cloudinit/url_helper.py:40: UserWarning: Module backports was already imported from /usr/lib64/python2.6/site-packages/backports/__init__.pyc, but /usr/lib/python2.6/site-packages is being added to sys.path
  import pkg_resources
Cloud-init v. 0.7.4 running 'init' at Sun, 29 Mar 2015 07:56:52 +0000. Up 40.55 seconds.
ci-info: +++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++
ci-info: +--------+------+--------------+-----------------+-------------------+
ci-info: | Device |  Up  |   Address    |       Mask      |     Hw-Address    |
ci-info: +--------+------+--------------+-----------------+-------------------+
ci-info: |   lo   | True |  127.0.0.1   |    255.0.0.0    |         .         |
ci-info: |  eth0  | True | 172.16.77.93 | 255.255.255.240 | d0:0d:f3:ab:33:87 |
ci-info: +--------+------+--------------+-----------------+-------------------+
ci-info: +++++++++++++++++++++++++++++++++Route info++++++++++++++++++++++++++++++++++
ci-info: +-------+--------------+--------------+-----------------+-----------+-------+
ci-info: | Route | Destination  |   Gateway    |     Genmask     | Interface | Flags |
ci-info: +-------+--------------+--------------+-----------------+-----------+-------+
ci-info: |   0   | 172.16.77.80 |   0.0.0.0    | 255.255.255.240 |    eth0   |   U   |
ci-info: |   1   |   0.0.0.0    | 172.16.77.81 |     0.0.0.0     |    eth0   |   UG  |
ci-info: +-------+--------------+--------------+-----------------+-----------+-------+

I made a inquiry of what should do to get IP properly and one of my colleague finally gave me link that was perfect answer. According to link, provided the guidance for configuring the following settings on NC node.
 
# Generated by iptables-save v1.4.7 on Wed Mar  6 21:19:36 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [294733:108329028]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8775 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -p udp -m udp --sport 68 --dport 67 -j ACCEPT 
-A FORWARD -s 192.168.0.0/16 -j ACCEPT 
-A FORWARD -d 192.168.0.0/16 -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Wed Mar  6 21:19:36 2013

One more thing that I need to mention.
In case of not connecting metadata server when running VM, Please check if opens TCP port 8773 on CLC node.

Let's see the picture.
Metadata server is typically 169.254.169.254 and is added to eth1 on CC node. It looks like Medata server is running on CC node.

Look at the next.

Eucalyptus automatically adds a PREROUTING rule which send Meatadata server traffic to 8773 port of CLC node.
So, the node which serves as Metadata server is CLC node, not CC node. As as result, it needs to check CLC node in dealing metadata.


References:
1. https://www.eucalyptus.com/docs/eucalyptus/4.1.0/index.html#install-guide/configuring_iptables.html
2. https://eucalyptus.atlassian.net/browse/EUCA-5323

2012년 10월 24일 수요일

Eucalyptus management console introduced

Here, Eucalyptus management console has been introduced. 

http://coderslike.us/2012/10/19/here-comes-the-eucalyptus-management-console/#

So far, Because of insufficient UI, Eucalyptus administrators had used other management consoles such HybridFox or ElasticFox. Though these are designed for Amazon web service (AWS), but Eucalyptus has perfect compatibility with AWS, so there are widely used from users for managing Eucalyptus private cloud.

2012년 4월 26일 목요일

Open Virtualization for Open Clouds


  • Main reason for Open virtualization: Accelerating interoperability and portability to prevent cloud vendor lock-in.
  • OVA is based on KVM(Kernel-based Virtual Machine) virtualization

reference sites:
1) OVA home page: http://www.openvirtualizationalliance.org/

2011년 12월 28일 수요일

Whitepaper: The Business Benefits of On-premise Infrastructure as a Service Cloud Platform

A white paper named "The Business Benefits of On-premise Infrastructure as a Service Cloud Platform" comes from Eucalyptus.  It describes seven distinct IaaS use cases.

  • Better IT Asset Management and Streamlined Operations
  • Software Development and Testing
  • Scalable Web Applications
  • Training and e-learning
  • Storage as a Service
  • Remote Desktop Hosting
  • Rich Media Encoding/Decoding

To view this whitepaper, click the link: https://docs.google.com/open?id=0B8bCPfpV_icsOWIxMzEyZDYtOGM5YS00NTI3LTgxYTUtNGZjNDMxM2I1ZDc5