Skip to main content

Openstack manila phần 5: NFS-Ganesha Driver

GlusterFS Driver với NFS-Ganesha làm gateway
Sau khi cấu hình GlusterFS làm backend cho manila ta đã thấy một số nhược điểm
  • Là dạng Volume mapping do vậy ta sẽ phải thực hiện tạo các volume trước khi tạo share.
  • Nếu xem log các bạn có thể thấy để tạo một share thì manila-host sẽ phải SSH rất nhiều lần vào glusterfs-server(bằng số volume). Tham khảo log khi tạo share manila-share.log
Có một lựa chọn là ta có thể sử dụng NFS-Ganesha làm gateway cho GlusterFS Server sẽ có những ưu điểm sau
  • Là dạng directory mapping, mỗi 1 share sẽ tạo ra 1 directory trên volume của glusterfs
  • Dễ dàng giới hạn kích thước share (Không cần tạo nhiều volume có kích thước khác nhau trên glusterfs do vậy không cần cấu hình volume pattern)
Ta sẽ cần thêm 1 node cài nfs-ganesha server và mình sẽ sử dụng CentOS 7 để cài.
Mô hình cài đặt sẽ như sau
Cài đặt
  • Cài đặt NFS-ganesha
download repo nfs-ganesha và glusterfs
curl -o /etc/yum.repos.d/nfs-ganesha.repo http://download.gluster.org/pub/gluster/glusterfs/nfs-ganesha/2.3.0/EPEL.repo/nfs-ganesha.repo  
curl -o /etc/yum.repos.d/glusterfs-epel.repo http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.11/EPEL.repo/glusterfs-epel.repo  
update repo
yum update  
Cài đặt nfs-ganesha và glusterfs-client
yum -y install epel-release  
yum -y install glusterfs-ganesha  
Ta gluster server mình sẽ tạo một volume tên là vol để cấu hình trên ganesha
Ta có thể disable nfs trên volume này
gluster volume set vol nfs.disbale on  
File cấu hình /etc/ganesha/ganesha.conf sẽ như sau
EXPORT  
{
    # Export Id (bắt buộc, mỗi export có một đường Id)
    Export_Id = 78;

    # đường dẫn export (bắt buộc)
    Path = /shared;

    # đường dẫn Pseudo  (yêu cầu cho NFS v4)
    Pseudo = /shared;

    # Required for access (default is None)
    # Could use CLIENT blocks instead
    Access_Type = RW; # read/write

    # Exporting FSAL
    FSAL {
        Name = GLUSTER; # File system abstract layer là GLUSTER
        Hostname = "10.0.0.28"; # Ip, hostname của 1 node trong cụm glusterfs
        Volume =vol; # ten volume
    }
}
  • Khởi động lại nfs-ganesha
service nfs-ganesha restart  
  • Kiểm tra export
showmount -e localhost  
  • Cấu hình trên manila-share ở đây mình tiếp tục dùng node compute1 để chạy manila-share mở file /etc/manila/manila.conf thêm đoạn sau
[ganesha]
share_backend_name = ganesha #tên backend  
glusterfs_nfs_server_type = Ganesha # sử dụng ganesha server  
glusterfs_target=root@10.0.0.28:/vol # user, IP(hostmame) , volume name của Gluster được cấu hình trên gluster  
glusterfs_server_password=saphi # password để login vào gluster server  
share_driver = manila.share.drivers.glusterfs.GlusterfsShareDriver # driver  
ganesha_service_name = nfs-ganesha # tên service của ganesha trên ganesha-server  
driver_handles_share_servers = False  
glusterfs_ganesha_server_ip=172.16.25.146 # IP của ganesha server  
glusterfs_ganesha_server_username=root # user để ssh  
glusterfs_ganesha_server_password=saphi # password  
sau đó enable backend này lên
enabled_share_backends = generic,ganesha  
enabled_share_protocols = NFS,CIFS,GLUSTERFS  
Lưu ý:
  • Tại sao cần manila host cần ssh vào gluster? Bởi vì manila sẽ truy cập vào và đặt các quota cũng như các export trên volume đó. Ta có thể kiểm tra cmd_history trên glusterfs-server
  • Kiểm tra service manila
manila service-list  
  • Tạo share type ta cần disable snapshot vì đây là dạng directory mapping do vậy ko hỗ trợ snapshot
manila type-create ganesha False  
manila type-key ganesha set share_backend_name=ganesha  
manila type-key ganesha set snapshot_support=False
  • Tạo một share có tên share-2 dung lượng 2GB trên backend ganesha
manila create nfs 2 --name share-2 --share-type ganesha  
  • Set access allow theo IP
Khi tạo một access ta thử kiểm tra file export share trên ganesha server tại đường dẫn /etc/ganesha/export.d/sẽ như sau
  • Kiểm tra đường dẫn mount
Ta thấy đường dẫn mount yêu cầu thêm access-id chính là ID của access ta tạo ở trên.
  • Thực hiện mount kiểm tra trên client
  • Ta thấy mỗi một share được tạo ra sẽ là một export trên nfs-ganesha server và ứng với một share là một directory mới được tạo ra trên share server. Và các export được set đúng quota như share..

Comments

Popular posts from this blog

Merge AVHDX Hyper-V Checkpoints

When you create a snapshot of a virtual machine in Microsoft Hyper-V, a new file is created with the  .avhdx  file extension. The name of the file begins with the name of its parent VHDX file, but it also has a GUID following that, uniquely representing that checkpoint (sometimes called snapshots). You can see an example of this in the Windows Explorer screenshot below. Creating lots of snapshots will result in many  .avhdx  files, which can quickly become unmanageable. Consequently, you might want to merge these files together. If you want to merge the  .avhdx  file with its parent  .vhdx  file, it’s quite easy to accomplish. PowerShell Method Windows 10 includes support for a  Merge-VHD  PowerShell command, which is incredibly easy to use. In fact, you don’t even need to be running PowerShell “as Administrator” in order to merge VHDX files that you have access to. All you need to do is call  Merge-VHD  with the  -Path  parameter, pointing to the  .avhdx  file, and the  -Des

Openstack manila phần 4: Native GlusterFS Driver

Tiếp tục loạt bài về Openstack Manila hôm nay tôi sẽ cấu hình backend sử dụng GlusterFS Yêu cầu phiên bản GlusterFS >= 3.6. Với glusterfs nếu cluster của bạn không hỗ trợ snapshot thì trên manila cũng sẽ mất đi tính năng này. Để cấu hình snapshot ta sẽ cấu hình Thin Provision theo bài hướng dẫn link Với bài lab của mình có 2 node và chạy kiểu replicate. Mình sẽ tạo các thinly provisioned và tạo volume trên đó. Mô hình cài đặt Cài đặt glusterfs-v3.7 add-apt-repository ppa:gluster/glusterfs-3.7 -y apt-get update apt-get install glusterfs-server -y Tham khảo script tạo thin LV và gluster volume Script tạo thinly provisioned chạy trên 2 node apt-get install xfsprogs -y pvcreate /dev/sdb vgcreate myVG /dev/sdb lvcreate -L 8G -T myVG/thinpool for ((i = 1;i<= 5; i++ )) do mkdir -p /manila/manila-"$i" for (( j = 1; j<= 5; j++)) do lvcreate -V "${i}"Gb -T myVG/thinpool -n vol-"$i"-"$j" mkfs.xfs /dev/my

Zabbix, AWS and Auto Registration

One of the things I love the most with AWS is  auto-scaling . You choose an AMI, set some parameters and AWS will spin instances up and down whenever a threshold is breached. But with all these instances spinning up and down there are some unknowns. For example, what is the IP address of the new instance? Its host name? This can be critical when other components of your infrastructure are dependent on knowing these parameters. I had this problem when I started to use  Zabbix  as the monitoring system. At first it seemed like a complicated one, but Zabbix has a wonderful feature called  Auto Registration  which can be used exactly for this situation. I will try to show how to configure auto registration both on the client (EC2 instance running Ubuntu 14.04) and on the Zabbix server (Zabbix Server 2.4.2). Zabbix-agent Installation and Configuration Let’s start with installing zabbix-agent on the Ubuntu client: 1 2 $ sudo apt-get update $ sudo apt-get install -y zab