Fully integrated Resource Provider INFN-PADOVA-STACK in production since 4 February 2019, decommissioned the 18 September 2023.
Controller/Network node and Compute nodes were installed according to OpenStack official documentation
We created one project for each EGI FedCloud VO supported, a router and various nets and subnets obtaining the following network topology:
We mount the partitions for the glance and cinder services (cinder not in the fstab file) from 192.168.61.100 with nfs driver:
yum install -y nfs-utils mkdir -p /var/lib/glance/images cat<<EOF>>/etc/fstab 192.168.61.100:/glance-egi /var/lib/glance/images nfs defaults EOF mount -a
We use some specific configurations for cinder services using the following documentation cinder with NFS backend.
(see EGI Doc)
Install CAs Certificates and the software for fetching the CRLs in both Controller (egi-cloud) Compute (cloud-01:07) nodes and egi-cloud-ha node:
systemctl stop httpd curl -L http://repository.egi.eu/sw/production/cas/1/current/repo-files/EGI-trustanchors.repo | sudo tee /etc/yum.repos.d/EGI-trustanchors.repo yum install -y ca-policy-egi-core fetch-crl http://artifacts.pd.infn.it/packages/CAP/misc/CentOS7/noarch/ca_TERENA-SSL-CA-3-1.0-1.el7.centos.noarch.rpm systemctl enable fetch-crl-cron.service systemctl start fetch-crl-cron.service cd /etc/pki/ca-trust/source/anchors ln -s /etc/grid-security/certificates/*.pem . update-ca-trust extract
On egi-cloud-ha node also install CMD-OS repo:
yum -y install http://repository.egi.eu/sw/production/cmd-os/1/centos7/x86_64/base/cmd-os-release-1.0.1-1.el7.centos.noarch.rpm
Taken from official EGI doc.
To be executed on egi-cloud.pd.infn.it node:
vo=(ops dteam fedcloud.egi.eu enmr.eu) volast=enmr.eu EGIHOST=egi-cloud.pd.infn.it KYPORT=443 HZPORT=8443 yum install -y gridsite mod_auth_openidc sed -i "s|443|8443|g" /etc/httpd/conf.d/ssl.conf sed -i "s|/etc/pki/tls/certs/localhost.crt|/etc/grid-security/hostcert.pem|g" /etc/httpd/conf.d/ssl.conf sed -i "s|/etc/pki/tls/private/localhost.key|/etc/grid-security/hostkey.pem|g" /etc/httpd/conf.d/ssl.conf openstack-config --set /etc/keystone/keystone.conf auth methods password,token,openid,mapped openstack-config --set /etc/keystone/keystone.conf openid remote_id_attribute HTTP_OIDC_ISS openstack-config --set /etc/keystone/keystone.conf federation trusted_dashboard https://$EGIHOST:$HZPORT/dashboard/auth /websso/ curl -L https://raw.githubusercontent.com/openstack/keystone/master/etc/sso_callback_template.html > /etc/keystone/sso_ callback_template.html systemctl restart httpd.service source admin-openrc.sh openstack identity provider create --remote-id https://aai-dev.egi.eu/oidc/ egi.eu echo [ > mapping.egi.json echo [ > mapping.voms.json for i in ${vo[@]} do openstack group create $i openstack role add member --group $i --project VO:$i groupid=$(openstack group show $i -f value -c id) cat <<EOF>>mapping.egi.json { "local": [ { "user": { "type":"ephemeral", "name":"{0}" }, "group": { "id": "$groupid" } } ], "remote": [ { "type": "HTTP_OIDC_SUB" }, { "type": "HTTP_OIDC_ISS", "any_one_of": [ "https://aai-dev.egi.eu/oidc/" ] }, { "type": "OIDC-edu_person_entitlements", "regex": true, "any_one_of": [ "^urn:mace:egi.eu:group:$i:role=vm_operator#aai.egi.eu$" ] } ] EOF [ $i = $volast ] || ( echo "}," >> mapping.egi.json ) [ $i = $volast ] && ( echo "}" >> mapping.egi.json ) [ $i = $volast ] && ( echo "]" >> mapping.egi.json ) cat <<EOF>>mapping.voms.json { "local": [ { "user": { "type":"ephemeral", "name":"{0}" }, "group": { "id":"$groupid" } } ], "remote": [ { "type":"GRST_CONN_AURI_0" }, { "type":"GRST_VOMS_FQANS", "any_one_of":[ "^/$i/.*" ], "regex":true } ] EOF [ $i = $volast ] || ( echo "}," >> mapping.voms.json ) [ $i = $volast ] && ( echo "}" >> mapping.voms.json ) [ $i = $volast ] && ( echo "]" >> mapping.voms.json ) done openstack mapping create --rules mapping.egi.json egi-mapping openstack federation protocol create --identity-provider egi.eu --mapping egi-mapping openid openstack mapping create --rules mapping.voms.json voms openstack federation protocol create --identity-provider egi.eu --mapping voms mapped mkdir -p /etc/grid-security/vomsdir/${vo[0]} cat > /etc/grid-security/vomsdir/${vo[0]}/lcg-voms2.cern.ch.lsc <<EOF /DC=ch/DC=cern/OU=computers/CN=lcg-voms2.cern.ch /DC=ch/DC=cern/CN=CERN Grid Certification Authority EOF cat > /etc/grid-security/vomsdir/${vo[0]}/voms2.cern.ch.lsc <<EOF /DC=ch/DC=cern/OU=computers/CN=voms2.cern.ch /DC=ch/DC=cern/CN=CERN Grid Certification Authority EOF mkdir -p /etc/grid-security/vomsdir/${vo[1]} cat > /etc/grid-security/vomsdir/${vo[1]}/voms2.hellasgrid.gr.lsc <<EOF /C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms2.hellasgrid.gr /C=GR/O=HellasGrid/OU=Certification Authorities/CN=HellasGrid CA 2016 EOF cat > /etc/grid-security/vomsdir/${vo[1]}/voms.hellasgrid.gr.lsc <<EOF /C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms.hellasgrid.gr /C=GR/O=HellasGrid/OU=Certification Authorities/CN=HellasGrid CA 2016 EOF mkdir -p /etc/grid-security/vomsdir/${vo[2]} cat > /etc/grid-security/vomsdir/${vo[2]}/voms1.grid.cesnet.cz.lsc <<EOF /DC=cz/DC=cesnet-ca/O=CESNET/CN=voms1.grid.cesnet.cz /DC=cz/DC=cesnet-ca/O=CESNET CA/CN=CESNET CA 3 EOF cat > /etc/grid-security/vomsdir/${vo[0]}/voms2.grid.cesnet.cz.lsc <<EOF /DC=cz/DC=cesnet-ca/O=CESNET/CN=voms2.grid.cesnet.cz /DC=cz/DC=cesnet-ca/O=CESNET CA/CN=CESNET CA 3 EOF mkdir -p /etc/grid-security/vomsdir/${vo[3]} cat > /etc/grid-security/vomsdir/${vo[3]}/voms2.cnaf.infn.it.lsc <<EOF /C=IT/O=INFN/OU=Host/L=CNAF/CN=voms2.cnaf.infn.it /C=IT/O=INFN/CN=INFN Certification Authority EOF cat > /etc/grid-security/vomsdir/${vo[3]}/voms-02.pd.infn.it.lsc <<EOF /DC=org/DC=terena/DC=tcs/C=IT/L=Frascati/O=Istituto Nazionale di Fisica Nucleare/CN=voms-02.pd.infn.it /C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA eScience SSL CA 3 EOF # cat <<EOF>/etc/httpd/conf.d/wsgi-keystone-oidc-voms.conf Listen $KYPORT <VirtualHost *:$KYPORT> OIDCSSLValidateServer Off OIDCProviderTokenEndpointAuth client_secret_basic OIDCResponseType "code" OIDCClaimPrefix "OIDC-" OIDCClaimDelimiter ; OIDCScope "openid profile email refeds_edu eduperson_entitlement" OIDCProviderMetadataURL https://aai-dev.egi.eu/oidc/.well-known/openid-configuration OIDCClientID <your OIDC client token> OIDCClientSecret <yout OIDC client secret> OIDCCryptoPassphrase somePASSPHRASE OIDCRedirectURI https://$EGIHOST:$KYPORT/v3/auth/OS-FEDERATION/websso/openid/redirect # OAuth for CLI access OIDCOAuthIntrospectionEndpoint https://aai-dev.egi.eu/oidc/introspect OIDCOAuthClientID <yout OIDC client token> OIDCOAuthClientSecret <yout OIDC client secret> # OIDCOAuthRemoteUserClaim sub # Increase Shm cache size for supporting long entitlements OIDCCacheShmEntrySizeMax 33297 # Use the IGTF trust anchors for CAs and CRLs SSLCACertificatePath /etc/grid-security/certificates/ SSLCARevocationPath /etc/grid-security/certificates/ SSLCACertificateFile $CA_CERT SSLEngine on SSLCertificateFile /etc/grid-security/hostcert.pem SSLCertificateKeyFile /etc/grid-security/hostkey.pem # Verify clients if they send their certificate SSLVerifyClient optional SSLVerifyDepth 10 SSLOptions +StdEnvVars +ExportCertData SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On LimitRequestBody 114688 <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> ErrorLog /var/log/httpd/keystone.log CustomLog /var/log/httpd/keystone_access.log combined <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> <Location /v3/OS-FEDERATION/identity_providers/egi.eu/protocols/mapped/auth> # populate ENV variables GridSiteEnvs on # turn off directory listings GridSiteIndexes off # accept GSI proxies from clients GridSiteGSIProxyLimit 4 # disable GridSite method extensions GridSiteMethods "" Require all granted Options -MultiViews </Location> <Location ~ "/v3/auth/OS-FEDERATION/websso/openid"> AuthType openid-connect Require valid-user #Require claim iss:https://aai-dev.egi.eu/ LogLevel debug </Location> <Location ~ "/v3/OS-FEDERATION/identity_providers/egi.eu/protocols/openid/auth"> Authtype oauth20 Require valid-user #Require claim iss:https://aai-dev.egi.eu/ LogLevel debug </Location> </VirtualHost> Alias /identity /usr/bin/keystone-wsgi-public <Location /identity> SetHandler wsgi-script Options +ExecCGI WSGIProcessGroup keystone-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On </Location> EOF sed -i "s|http://$EGIHOST:$KYPORT|https://$EGIHOST|g" /etc/*/*.conf source admin-openrc.sh for i in public internal admin do keyendid=$(openstack endpoint list --service keystone --interface $i -f value -c ID) openstack endpoint set --url https://$EGIHOST/v3 $keyendid done systemctl restart httpd.service
OpenStack Dashboard (Horizon) Configuration:
OPENSTACK_KEYSTONE_URL = "https://%s/v3" % OPENSTACK_HOST WEBSSO_ENABLED = True WEBSSO_INITIAL_CHOICE = "credentials" WEBSSO_CHOICES = ( ("credentials", _("Keystone Credentials")), (""openid", _("EGI Check-in")) )
To change the dashboard logo, copy the right svg file in /usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/img/logo-splash.svg
For publicly exposing on https some OpenStack services do not forget to create the files /etc/httpd/conf.d/wsgi-nova,neutron,glance,cinder.conf and set the corresponding endpoints before to restart everyhting.
(See EGI integration guide and BDII configuration guide) Installing the resource bdii and the cloud-info-provider in egi-cloud-ha (with CMD-OS repo already installed):
yum -y install bdii cloud-info-provider cloud-info-provider-openstack
Customize the configuration file /etc/cloud-info-provider/sample.openstack.yaml with the local sites' infos, and rename it /etc/cloud-info-provider/openstack.yaml
Customize the file /etc/cloud-info-provider/openstack.rc with the right credential, for example:
export OS_AUTH_URL=https://egi-cloud.pd.infn.it:443/v3 export OS_PROJECT_DOMAIN_ID=default export OS_REGION_NAME=RegionOne export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=admin export OS_IDENTITY_API_VERSION=3 export OS_USERNAME=accounting export OS_PASSWORD=<the user password> export OS_AUTH_TYPE=password export OS_CACERT=/etc/pki/tls/certs/ca-bundle.crt
Create the file /var/lib/bdii/gip/provider/cloud-info-provider that calls the provider with the correct options for your site, for example:
cat<<EOF>/var/lib/bdii/gip/provider/cloud-info-provider #!/bin/sh . /etc/cloud-info-provider/openstack.rc for P in $(openstack project list -c Name -f value); do cloud-info-provider-service --yaml /etc/cloud-info-provider/openstack.yaml \ --os-tenant-name $P \ --middleware openstack done EOF
Run manually the cloud-info-provider script and check that the output return the complete LDIF. To do so, execute:
chmod +x /var/lib/bdii/gip/provider/cloud-info-provider /var/lib/bdii/gip/provider/cloud-info-provider /sbin/chkconfig bdii on
Now you can start the bdii service:
systemctl start bdii
Use the command below to see if the information is being published:
ldapsearch -x -h localhost -p 2170 -b o=glue
Do not forget to open port 2170:
firewall-cmd --add-port=2170/tcp firewall-cmd --permanent --add-port=2170/tcp systemctl restart firewalld
Information on how to set up the site-BDII in egi-cloud-sbdii.pd.infn.it is available here
Add your cloud-info-provider to your site-BDII egi-cloud-sbdii.pd.infn.it by adding new lines in the site.def like this:
BDII_REGIONS="CLOUD BDII" BDII_CLOUD_URL="ldap://egi-cloud-ha.pn.pd.infn.it:2170/GLUE2GroupID=cloud,o=glue" BDII_BDII_URL="ldap://egi-cloud-sbdii.pd.infn.it:2170/mds-vo-name=resource,o=grid"
Cloud usage records are sent to APEL through the ssmsend program installed in cert-37.pd.infn.it:
[root@cert-37 ~]# cat /etc/cron.d/ssm-cloud # send buffered usage records to APEL 30 */24 * * * root /usr/bin/ssmsend -c /etc/apel/sender-cloud.cfg
It is therefore neede to install and configure NFS on egi-cloud-ha:
[root@egi-cloud-ha ~]# yum -y install nfs-utils [root@egi-cloud-ha ~]# mkdir -p /var/spool/apel/outgoing/openstack [root@egi-cloud-ha ~]# cat<<EOF>>/etc/exports /var/spool/apel/outgoing/openstack cert-37.pd.infn.it(rw,sync) EOF [root@egi-cloud-ha ~]# systemctl start nfs-server
In case of APEL nagios probe failure, check if /var/spool/apel/outgoing/openstack is properly mounted by cert-37
To check if accounting records are properly received by APEL server look at this site
(see cASO installation guide )
On egi-cloud create accounting user and role, and set the proper policies:
openstack user create --domain default --password <ACCOUNTIN_PASSWORD> accounting openstack role create accounting for i in VO:fedcloud.egi.eu VO:enmr.eu VO:ops; do openstack role add --project $i --user accounting accounting; done cat<<EOF>>/etc/keystone/policy.json "accounting_role": "role:accounting" "identity:list_users": "rule:admin_required or rule:accounting_role" EOF
Install cASO on egi-cloud-ha (with CMD-OS repo already installed):
yum -y install caso
Edit the /etc/caso/caso.conf file
openstack-config --set /etc/caso/caso.conf DEFAULT site_name INFN-PADOVA-STACK openstack-config --set /etc/caso/caso.conf DEFAULT projects VO:ops,VO:fedcloud.egi.eu,VO:enmr.eu openstack-config --set /etc/caso/caso.conf DEFAULT messengers caso.messenger.ssm.SSMMessengerV02 openstack-config --set /etc/caso/caso.conf DEFAULT log_dir /var/log/caso openstack-config --set /etc/caso/caso.conf DEFAULT log_file caso.log openstack-config --set /etc/caso/caso.conf keystone_auth auth_type password openstack-config --set /etc/caso/caso.conf keystone_auth username accounting openstack-config --set /etc/caso/caso.conf keystone_auth password ACCOUNTING_PASSWORD openstack-config --set /etc/caso/caso.conf keystone_auth auth_url https://egi-cloud.pd.infn.it/v3 openstack-config --set /etc/caso/caso.conf keystone_auth cafile /etc/pki/tls/certs/ca-bundle.crt openstack-config --set /etc/caso/caso.conf keystone_auth project_domain_id default openstack-config --set /etc/caso/caso.conf keystone_auth project_domain_name default openstack-config --set /etc/caso/caso.conf keystone_auth user_domain_id default openstack-config --set /etc/caso/caso.conf keystone_auth user_domain_name default
Create the directories
mkdir /var/spool/caso /var/log/caso /var/spool/apel/outgoing/openstack/
Test it
caso-extract -v -d
Create the cron job
cat <<EOF>/etc/cron.d/caso # extract and send usage records to APEL/SSM 10 * * * * root /usr/bin/caso-extract >> /var/log/caso/caso.log 2>&1 ; chmod go+w -R /var/spool/apel/outgoing/openstack/ EOF
On egi-cloud.pd.infn.it create a cloudkeeper user in keystone:
openstack user create --domain default --password CLOUDKEEPER_PASS cloudkeeper
and, for each project, add the cloudkeeper user with the user role
for i in VO:ops VO:fedcloud.egi.eu VO:enmr.eu; do openstack role add --project $i --user cloudkeeper user; done
Install Cloudkeeper and Cloudkeeper-OS on egi-cloud-ha (with CMD-OS repo already installed):
yum -y install cloudkeeper cloudkeeper-os
Edit /etc/cloudkeeper/cloudkeeper.yml and add the list of VO image lists and the IP address where needed:
- https://PERSONAL_ACCESS_TOKEN:x-oauth-basic@vmcaster.appdb.egi.eu/store/vo/fedcloud.egi.eu/image.list - https://PERSONAL_ACCESS_TOKEN:x-oauth-basic@vmcaster.appdb.egi.eu/store/vo/ops/image.list - https://PERSONAL_ACCESS_TOKEN:x-oauth-basic@vmcaster.appdb.egi.eu/store/vo/enmr.eu/image.list
Edit the /etc/cloudkeeper-os/cloudkeeper-os.conf file
openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf DEFAULT log_file cloudkeeper-os.log openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf DEFAULT log_dir /var/log/cloudkeeper-os/ openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken auth_url https://egi-cloud.pd.infn.it/v3 openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken username cloudkeeper openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken password CLOUDKEEPER_PASS openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken cafile /etc/pki/tls/certs/ca-bundle.crt openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken cacert /etc/pki/tls/certs/ca-bundle.crt openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken user_domain_name default openstack-config --set /etc/cloudkeeper-os/cloudkeeper-os.conf keystone_authtoken project_domain_name default
Creating the /etc/cloudkeeper-os/voms.json mapping file:
cat<<EOF>/etc/cloudkeeper-os/voms.json { "ops": { "tenant": "VO:ops" }, "enmr.eu": { "tenant": "VO:enmr.eu" }, "fedcloud.egi.eu": { "tenant": "VO:fedcloud.egi.eu" } } EOF
Enable and start the services
systemctl enable cloudkeeper-os systemctl start cloudkeeper-os systemctl enable cloudkeeper.timer systemctl start cloudkeeper.timer
Install and configure squid on cloud-01 and cloud-02 for use from VMs (see https://cvmfs.readthedocs.io/en/stable/cpt-squid.html):
yum install -y squid sed -i "s|/var/spool/squid|/export/data/spool/squid|g" /etc/squid/squid.conf cat<<EOF>>/etc/squid/squid.conf minimum_expiry_time 0 max_filedesc 8192 maximum_object_size 1024 MB cache_mem 128 MB maximum_object_size_in_memory 128 KB # 50 GB disk cache cache_dir ufs /export/data/spool/squid 50000 16 256 acl cvmfs dst cvmfs-stratum-one.cern.ch acl cvmfs dst cernvmfs.gridpp.rl.ac.uk acl cvmfs dst cvmfs.racf.bnl.gov acl cvmfs dst cvmfs02.grid.sinica.edu.tw acl cvmfs dst cvmfs.fnal.gov acl cvmfs dst cvmfs-atlas-nightlies.cern.ch acl cvmfs dst cvmfs-egi.gridpp.rl.ac.uk acl cvmfs dst klei.nikhef.nl acl cvmfs dst cvmfsrepo.lcg.triumf.ca acl cvmfs dst cvmfsrep.grid.sinica.edu.tw acl cvmfs dst cvmfs-s1bnl.opensciencegrid.org acl cvmfs dst cvmfs-s1fnal.opensciencegrid.org http_access allow cvmfs EOF rm -rf /var/spool/squid mkdir -p /export/data/spool/squid chown -R squid.squid /export/data/spool/squid squid -k parse squid -z ulimit -n 8192 systemctl start squid firewall-cmd --permanent --add-port 3128/tcp systemctl restart firewalld
Use CVMFS_HTTP_PROXY="http://cloud-01.pn.pd.infn.it:3128|http://cloud-02.pn.pd.infn.it:3128" on the CVMFS clients.
Actually, better to use already existing squids: CVMFS_HTTP_PROXY="http://squid-01.pd.infn.it:3128|http://squid-02.pd.infn.it:3128"
A local accounting system based on Grafana, InfluxDB and Collectd has been set up following the instructions here.
$ echo encryption_method=1 >> /etc/nagios/send_nsca.cfg $ usermod -a -G libvirt nagios $ sed -i 's|#password=|password=NSCA_PASSWORD|g' /etc/nagios/send_nsca.cfg # then be sure the files below are in /usr/local/bin: $ ls /usr/local/bin/ check_kvm check_kvm_wrapper.sh $ cat <<EOF > crontab.txt # Puppet Name: nagios_check_kvm 0 */1 * * * /usr/local/bin/check_kvm_wrapper.sh EOF $ crontab crontab.txt $ crontab -l
"os_compute_api:servers:create:forced_host": ""
and in /etc/cinder/policy.json the line:
"volume_extension:quotas:show": ""
See here for the description of the full process On egi-cloud do install the CNRS tools, they allow to track the usage of floating IPs as in the example below:
[root@egi-cloud ~]# os-ip-trace 90.147.77.229 +--------------------------------------+-----------+---------------------+---------------------+ | device id | user name | associating date | disassociating date | +--------------------------------------+-----------+---------------------+---------------------+ | 3002b1f1-bca3-4e4f-b21e-8de12c0b926e | admin | 2016-11-30 14:01:38 | 2016-11-30 14:03:02 | +--------------------------------------+-----------+---------------------+---------------------+
Save and archive important log files:
Install ulogd in the controller node
yum install -y libnetfilter_log yum localinstall -y http://repo.iotti.biz/CentOS/7/x86_64/ulogd-2.0.5-2.el7.lux.x86_64.rpm yum localinstall -y http://repo.iotti.biz/CentOS/7/x86_64/libnetfilter_acct-1.0.2-3.el7.lux.1.x86_64.rpm
and configure /etc/ulogd.conf by replacing properly accept_src_filter variable (accept_src_filter=10.0.0.0/16) starting from the one in cld-ctrl-01:/etc/ulogd.conf. Then copy cld-ctrl-01:/root/ulogd/start-ulogd to egi-cloud:/root/ulogd/start-ulogd, replace the qrouter ID and execute /root/ulogd/start-ulogd. Then add to /etc/rc.d/rc.local the line /root/ulogd/start-ulogd &, and make rc.local executable. Start the service
systemctl enable ulogd
systemctl start ulogd
Finally, be sure that /etc/rsyslog.conf file has the lines "local6.* /var/log/ulogd.log" and "*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages", and restart rsyslog service.
$ ssh root@egi-cloud [root@egi-cloud ~]# ./rocky_controller.sh restart [root@egi-cloud ~]# for i in $(seq 1 7); do ssh cloud-0$i ./rocky_compute.sh restart; done
[root@egi-cloud ~]# python nova-quota-sync.py
[root@egi-cloud ~]# /sbin/ethtool -k em3 | grep -i generic-receive-offload generic-receive-offload: off
[root@egi-cloud ~]# cat /sbin/ifup-local #!/bin/bash case "$1" in em1) /sbin/ethtool -K $1 gro off ;; em2) /sbin/ethtool -K $1 gro off ;; em3) /sbin/ethtool -K $1 gro off ;; em4) /sbin/ethtool -K $1 gro off ;; esac exit 0
[root@egi-cloud ~]# source admin-openrc.sh [root@egi-cloud ~]# openstack quota set --cores 184 VO:enmr.eu