[email protected] 6 KVM libvirtd

Install WebVirtMgr @ Centos 6:

# yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
# git clone git://github.com/retspen/webvirtmgr.git
# cd webvirtmgr
# pip install -r requirements.txt
# ./manage.py syncdb
# ./manage.py collectstatic


##########Adding additional superusers

# ./manage.py createsuperuser

######
# cd ..
# mv webvirtmgr /var/www/
####NGINX VIRTULKA HOST:

# cat /etc/nginx/conf.d/webvirtmgr.conf 
server {
    listen       6699;
    server_name  kvm.belomor.nl:6699;
    

    location /static/ {
root /var/www/webvirtmgr/webvirtmgr;        
expires max;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 1024M; # Set higher depending on your needs 
    }
}

###Update SELinux policy

# setsebool httpd_can_network_connect true 

####SET OWNER nginx
# chown -R nginx:nginx /var/www/webvirtmgr


#####################

Add these lines to end of file /etc/supervisord.conf

[program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx

[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx


#########

vi /var/www/webvirtmgr/conf/gunicorn.conf.py

#bind = '127.0.0.1:8000'
bind = '192.168.200.70:8000'
####U can change it to desired port...

#############

# service supervisord restart

###ACCESS

http://x.x.x.x:8000 (x.x.x.x - your server IP address )

##############DEBUG

# ./manage.py runserver 0:8000

####SSH CONNECTION:
####on KVM host create file:
# vi /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

[Remote libvirt SSH access]
Identity=unix-user:nginx
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

#####
# su - nginx -s /bin/bash

-bash-4.1$ ssh-keygen
-bash-4.1$ touch ~/.ssh/config
-bash-4.1$ echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
-bash-4.1$ chmod 0600 ~/.ssh/config
-bash-4.1$ ssh-copy-id [email protected]
-bash-4.1$ ssh [email protected]
-bash-4.1$ virsh -c qemu+ssh://[email protected]/system list --all
 Id    Name                           State
----------------------------------------------------
 2     CactiEZ                        running
 3     Debian8                        running
 -     1pc0p                          shut off
 -     V01c3                          shut off
 -     Z3nty4l                        shut off
###

My KVM Hypervizor is behind NAT so therefore I have port forward rules on Cisco router:

#sh run | in 192.168.200.70
ip nat inside source static tcp 192.168.200.70 6080 ext_ip 6080 extendable
ip nat inside source static tcp 192.168.200.70 8000 ext_ip 8000 extendable

#####
screens:

<a href="http://www.anit.az/wp-content/uploads/2016/04/kvm-stats.jpg"><img class="aligncenter size-medium wp-image-928" src="http://www.anit.az/wp-content/uploads/2016/04/kvm-stats-300x281.jpg" alt="kvm-stats" width="300" height="281" /></a> <a href="http://www.anit.az/wp-content/uploads/2016/04/kvm_console.jpg"><img class="aligncenter size-medium wp-image-929" src="http://www.anit.az/wp-content/uploads/2016/04/kvm_console-300x205.jpg" alt="kvm_console" width="300" height="205" /></a> <a href="http://www.anit.az/wp-content/uploads/2016/04/kvm1.jpg"><img class="aligncenter size-medium wp-image-930" src="http://www.anit.az/wp-content/uploads/2016/04/kvm1-300x114.jpg" alt="kvm1" width="300" height="114" /></a>
<strong>BUG_SHIT:</strong>

Server disconnected (code: 1006) after 20 seconds
# vi /usr/lib/python2.6/site-packages/websockify/websocket.py
search and comment this lines:
if not multiprocessing:
# os.fork() (python 2.4) child reaper
signal.signal(signal.SIGCHLD, self.fallback_SIGCHLD)
else:
# make sure that _cleanup is called when children die
# by calling active_children on SIGCHLD
signal.signal(signal.SIGCHLD, self.multiprocessing_SIGCHLD)

# /etc/init.d/supervisord restart

####TROUBLESHOOTING:
# tail -f /var/log/libvirt/libvirtd.log
2016-04-11 10:23:49.672+0000: 5623: error : virNetServerAddClient:270 : Too many active clients (20), dropping connection from 127.0.0.1;0

SOLUTION ADD TO THE END OF
# vi /etc/libvirt/libvirtd.conf
####GUS
max_clients = 1024
min_workers = 50
max_workers = 200
max_requests = 1000
max_client_requests = 200

# /etc/init.d/libvirtd restart

#########

Done

# date

Mon Apr 11 12:18:30 AZT 2016