You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

Da Caracal a Epoxy

Procedura indicativa

A grandi linee la procedura sara':

  
    - Sul secondo controller i servizi sono attivi con versione C

    - Si spengono tutti i servizi sul primo controller
      Si aggiornano i pacchetti a E e si aggiiornano i file di configurazione sul primo controller (senza fare partire i servizi)
      Sul primo controller: keystone-manage db_sync --expand (il --expand di fatto fa in modo che il Db sia usabile sia per la versione C che per la versione E)
      Sul primo controller si avvia keystone
      si spegne keystone sul secondo controller
      Sul primo controller: keystone-manage db_sync --contract
    lo stesso per tutti gli altri servizi
    Alla fine si aggiorna il secondo controller e si fanno partire anche li' i servizi
    Si aggiornano i compute node uno alla volta



  • Sul secondo controller i servizi sono attivi con versione C
  • Si configura HAproxy in modo da far puntare al secondo controller
  • Si spengono tutti i servizi sul primo controller
  •  Si aggiornano i pacchetti a E e si aggiornano i file di configurazione sul primo controller
  • Sul primo controller: keystone-manage db_sync --expand (il --expand di fatto fa in modo che il Db sia usabile sia per la versione C che per la versione E)
    • Lo stesso per tutti gli altri servizi
  • Sul primo controller si avviano tutti i servizi e si controlla dai log che non ci siano errori
  • Si configura HAproxy in modo da far puntare al primo controller
  • Si spengono tutti i servizi sul secondo controller
  •  Si aggiornano i pacchetti a E e si aggiornano i file di configurazione sul secondo controller
  • Sul secondo controller si avviano tutti i servizi e si controlla dai log che non ci siano errori
  • Su un controller:
    • keystone-manage db_sync --contract 
      • Si fa lo stesso per gli altri servizi
      • MS: sicuri che si possa/vada fatto adesso e non quando tutti i compute node sono stati aggiornati ?
  • Si modifica HAproxy in modo che punti a entrambi i controller
  • Si aggiornano i compute node uno alla volta



Check preliminari ed installazione release sul controller1

  • Controllare che tutti i servizi Openstack siano spenti (MS no)
  • Migrare online il db placement e nova
  • #placement va fatto prima di nova
    su -s /bin/sh -c "placement-manage db online_data_migration" placement
    su -s /bin/sh -c "nova-manage db online_data_migration" nova
    su -s /bin/sh -c "cinder-manage db online_data_migrations" cinder


  • Controllare se sono installati openstack-client e selinux

    [root@controller-01 ~]# yum list installed | grep openstackclient
    python-openstackclient-lang.noarch                                6.6.1-1.el9s                     @centos-openstack-caracal       
    python3-openstackclient.noarch                                    6.6.1-1.el9s                     @centos-openstack-caracal       
    
    [root@controller-01 ~]# yum list installed | grep openstack-selinux
    openstack-selinux.noarch                                          0.8.40-1.el9s                    @centos-openstack-zed           
  • Controllare versione kernel e ceph

    [root@controller-01 ~]#  yum list installed | grep kernel
    kernel.x86_64                                                     5.14.0-427.24.1.el9_4            @anaconda                       
    kernel.x86_64                                                     5.14.0-503.33.1.el9_5            @baseos                         
    kernel-core.x86_64                                                5.14.0-427.24.1.el9_4            @anaconda                       
    kernel-core.x86_64                                                5.14.0-503.33.1.el9_5            @baseos                         
    kernel-headers.x86_64                                             5.14.0-503.33.1.el9_5            @appstream                      
    kernel-modules.x86_64                                             5.14.0-427.24.1.el9_4            @anaconda                       
    kernel-modules.x86_64                                             5.14.0-503.33.1.el9_5            @baseos                         
    kernel-modules-core.x86_64                                        5.14.0-427.24.1.el9_4            @anaconda                       
    kernel-modules-core.x86_64                                        5.14.0-503.33.1.el9_5            @baseos                         
    kernel-srpm-macros.noarch                                         1.0-13.el9                       @appstream                      
    kernel-tools.x86_64                                               5.14.0-503.33.1.el9_5            @baseos                         
    kernel-tools-libs.x86_64                                          5.14.0-503.33.1.el9_5            @baseos                                       
    
    [root@controller-01 ~]#  yum list installed | grep ceph 
    blosc.x86_64                                                      1.21.0-3.el9s                    @centos-ceph-pacific            
    centos-release-ceph-reef.noarch                                   1.0-1.el9                        @extras                         
    ceph-common.x86_64    
                                                2:18.2.4-2.el9s                  @centos-ceph-reef             
    
    [root@controller-01 ~]# uname -a
    Linux controller-01.cloud.pd.infn.it 5.14.0-503.33.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Mar 20 03:39:23 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
  • Rimuovere release Caracal

    yum remove centos-release-openstack-caracal.noarch
  • Installare Epoxy

    dnf install -y https://trunk.rdoproject.org/rdo_release/rdo-release.el9s.rpm  (potrebbe servire)
    dnf install centos-release-openstack-epoxy
  • Salvare configurazioni che di solito vengono sovrascritte

    export REL=caracal
    cp /etc/httpd/conf.d/openstack-dashboard.conf /etc/httpd/conf.d/openstack-dashboard.conf.$REL
  • Update pacchetti

    dnf update -y
    dnf upgrade -y
    
    da verificare e scrivere output
    
    
    
    risultato
    # DA VERIFICARE PER EPOXY 
    # Nell’update vengono scaricati i nuovi rpm: attenzione a questi file di configurazione
    
    cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.$REL
    cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.$REL
    cp /etc/nova/nova.conf /etc/nova/nova.conf.$REL
    cp /etc/placement/placement.conf /etc/placement/placement.conf.$REL
    cp /etc/heat/heat.conf /etc/heat/heat.conf.$REL
    cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.$REL
    cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.$REL
    cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.$REL
    cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.$REL
    cp /etc/neutron/plugins/ml2/openvswitch_agent.ini /etc/neutron/plugins/ml2/openvswitch_agent.ini.$REL
    cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.$REL
    cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.$REL
    cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.$REL
    cp /etc/httpd/conf.d/auth_openidc.conf /etc/httpd/conf.d/auth_openidc.conf.$REL
    
    mv -f /etc/openstack-dashboard/local_settings.rpmnew /etc/openstack-dashboard/local_settings
    mv -f /etc/neutron/neutron.conf.rpmnew /etc/neutron/neutron.conf
    mv -f /etc/nova/nova.conf.rpmnew /etc/nova/nova.conf
    mv -f /etc/placement/placement.conf.rpmnew /etc/placement/placement.conf
    mv -f /etc/heat/heat.conf.rpmnew /etc/heat/heat.conf
    mv -f /etc/neutron/dhcp_agent.ini.rpmnew /etc/neutron/dhcp_agent.ini
    mv -f /etc/neutron/l3_agent.ini.rpmnew /etc/neutron/l3_agent.ini
    mv -f /etc/neutron/metadata_agent.ini.rpmnew /etc/neutron/metadata_agent.ini
    mv -f /etc/neutron/plugins/ml2/ml2_conf.ini.rpmnew /etc/neutron/plugins/ml2/ml2_conf.ini
    mv -f /etc/neutron/plugins/ml2/openvswitch_agent.ini.rpmnew /etc/neutron/plugins/ml2/openvswitch_agent.ini
    mv -f /etc/keystone/keystone.conf.rpmnew /etc/keystone/keystone.conf
    mv -f /etc/glance/glance-api.conf.rpmnew /etc/glance/glance-api.conf
    mv -f /etc/cinder/cinder.conf.rpmnew /etc/cinder/cinder.conf
    mv -f /etc/httpd/conf.d/auth_openidc.conf.rpmnew /etc/httpd/conf.d/auth_openidc.conf
  • Aggiorniamo le configurazioni con puppet
    
    puppet agent -t 
    (il servizi devono rimanere spenti pero'...controllare)



  • KEYSTONE

    #crudini --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_xx_yyy@192.168.60.88:4306/keystone
    #crudini --set /etc/keystone/keystone.conf token provider fernet
    
    su -s /bin/sh -c "keystone-manage doctor" keystone
    su -s /bin/sh -c "keystone-manage db_sync --expand" keystone
    
    Facciamo ripartire httpd
    systemctl start httpd
    
    
    Spegnamo Keystone sul controller2 e facciamo aggiornamento alla fine di tutti i servizi o aggiorniamo ogni servizio singolarmente?
    
    Nel caso di aggiornamento del servizio nel controller2: 
    
    systemctl stop httpd
    dnf install -y https://trunk.rdoproject.org/rdo_release/rdo-release.el9s.rpm  (potrebbe servire)
    dnf install centos-release-openstack-epoxy
    dnf update openstack-keystone httpd python3-mod_wsgi
    
    e con i file di configurazione come facciamo?
    
    systemctl start httpd
    su -s /bin/sh -c "keystone-manage db_sync --contract" keystone   
    
    Dalla doc openstack:
    Update your configuration files (/etc/keystone/) on all nodes (except the first node, which you’ve already done) with those corresponding to the latest release.
    Upgrade all keystone nodes to the next release, and restart them one at a time. During this step, you’ll have a mix of releases operating side by side, both writing to the database.
    As the next release begins writing to the new schema, database triggers will also migrate the data to the old schema, keeping both data schemas in sync.
    Run keystone-manage db_sync --contract to remove the old schema and all data migration triggers.
    When this process completes, the database will no longer be able to support the previous release.
    
    Farei aggiornamento del controller2 tutto alla fine
    in questo caso, dopo l'aggiornamento del controller2 e fatto ripartire keystone, si deve eseguire il comando
    su -s /bin/sh -c "keystone-manage db_sync --contract" keystone    
  • GLANCE

    # crudini --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_xx_yyy@192.168.60.88:5306/glance     
    
    su -s /bin/sh -c "glance-manage db expand" glance
    
    su -s /bin/sh -c "glance-manage db migrate" glance
    
    systemctl start openstack-glance-api.service
    
    Spegnamo il servizio nel controller2
    
    systemctl stop openstack-glance-api.service
    
    Quanto anche il controller2 sara' aggiornato, eseguire
    su -s /bin/sh -c "glance-manage db contract" glance
    
    
  • PLACEMENT

    crudini --set /etc/placement/placement.conf placement_database connection \ mysql+pymysql://placement:PLACEMENT_xx_yyy@192.168.60.88:6306/placement
    
    su -s /bin/sh -c "placement-manage db expand" placement    ---> da verificare, altre guide dicono di fare solo il sync, che expand e contract non c'e' per placement...
    
    accendere il servizio placement sul controller1 e spengerlo sul controller2
    systemctl stop httpd
    
    Quando il controller2 sara' aggiornato
    su -s /bin/sh -c "placement-manage db contract" placement ( da verificare)
    
    
  • NOVA

    #crudini --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova_api
    #crudini --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova
    #crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_zzz@192.168.60.223:5672
    
    su -s /bin/sh -c "nova-status upgrade check" nova
    su -s /bin/sh -c "nova-manage api_db sync" nova
    su -s /bin/sh -c "nova-manage db sync" nova
    
    Far partire il servizio nel controller1 e spegnerlo nel controller2 
    systemctl start/stop \
        openstack-nova-api.service \
        openstack-nova-scheduler.service \
        openstack-nova-conductor.service \
        openstack-nova-novncproxy.service
    
    Quando anche il controller2 e tutti i compute saranno aggiornati, eseguire di nuovo
    su -s /bin/sh -c "nova-manage db online_data_migrations" nova
  • NEUTRON

    #crudini --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:NEUTRON_xx_yyy@192.168.60.88:5306/neutron
    #crudini --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_zzz@192.168.60.223:5672
    #crudini --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
    #crudini --set /etc/neutron/neutron.conf DEFAULT service_plugins router
    #crudini --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips True 
    
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan,gre
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types gre
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers openvswitch
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks *
    #crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True
    
    #su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
     
    su -s /bin/sh -c "neutron-db-manage upgrade --expand" neutron
    
    Stoppare il servizio sul controller2
    systemctl stop neutron-server.service \
      neutron-openvswitch-agent.service neutron-dhcp-agent.service \
      neutron-metadata-agent.service
    
    systemctl stop neutron-l3-agent.service
    
    Quando anche il controller2 sara' aggiornato eseguire il comando
    
    su -s /bin/sh -c "neutron-db-manage upgrade --contract" neutron
  • CINDER

    #crudini --set /etc/cinder/cinder.conf database connection mysql+pymysql://cinder:CINDER_xx_yyy@192.168.60.88:5306/cinder
    #crudini --set /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:RABBIT_zzz@192.168.60.223:5672
    
    su -s /bin/sh -c "cinder-manage db sync" cinder
    
    Far partire il servizio sul controller1 e stopparlo sul controller2
    systemctl start/stop openstack-cinder-api.service openstack-cinder-scheduler.service
    Quando il controller2 sara' aggiornato rieseguire il online_data_migration
    su -s /bin/sh -c "cinder-manage db online_data_migrations" cinder

    HEAT

    crudini --set /etc/heat/heat.conf database connection mysql+pymysql://heat:HEAT_xx_yyy@192.168.60.88:4306/heat
    crudini --set /etc/heat/heat.conf DEFAULT transport_url rabbit://openstack:RABBIT_zzz@192.168.60.223:5672
    
    su -s /bin/sh -c "heat-manage db_sync --command expand" heat
    su -s /bin/sh -c "heat-manage db_sync --command migrate_data" heat
    
    Accendere il servizio sul controller1 e spegnerlo sul controller2
    systemctl start/stop openstack-heat-api.service \
      openstack-heat-api-cfn.service openstack-heat-engine.service
    
    Quando anche il controller2 sara' aggiornato
    su -s /bin/sh -c "heat-manage db_sync --command contract" heat
  • DASHBOARD: nulla da fare

----QUI---

Configurare il controller via puppet

  • in foreman https://cld-config.cloud.pd.infn.it/hosts/controller-01.cloud.pd.infn.it editare l'host sostituendo l'hostgroup "hosts_all/ControllerNode-Test" con "hosts_all/ControllerNode-Test_Epoxy" ed eseguire puppet nel nodo

Installare pacchetti openstack-heat-ui e python3-osc-placement


[root@controller-01 yum.repos.d]# yum install openstack-heat-ui
Last metadata expiration check: 1:28:25 ago on Thu 23 Jan 2025 04:37:45 PM CET.
Dependencies resolved.
==============================================================================================================================================================================================
 Package                                                Architecture                     Version                                     Repository                                          Size
==============================================================================================================================================================================================
Installing:
 openstack-heat-ui                                      noarch                           11.0.0-2.el9s                               centos-openstack-caracal                           892 k
Installing dependencies:
 python3-XStatic-Angular-UUID                           noarch                           0.0.4.0-13.el9s                             centos-openstack-caracal                            13 k
 python3-XStatic-Angular-Vis                            noarch                           4.16.0.0-10.el9s                            centos-openstack-caracal                            13 k
 python3-XStatic-FileSaver                              noarch                           1.3.2.0-10.el9s                             centos-openstack-caracal                            13 k
 python3-XStatic-JS-Yaml                                noarch                           3.8.1.0-11.el9s                             centos-openstack-caracal                            13 k
 python3-XStatic-Json2yaml                              noarch                           0.1.1.0-10.el9s                             centos-openstack-caracal                            13 k
 xstatic-angular-uuid-common                            noarch                           0.0.4.0-13.el9s                             centos-openstack-caracal                            11 k
 xstatic-angular-vis-common                             noarch                           4.16.0.0-10.el9s                            centos-openstack-caracal                           9.6 k
 xstatic-filesaver-common                               noarch                           1.3.2.0-10.el9s                             centos-openstack-caracal                            11 k
 xstatic-js-yaml-common                                 noarch                           3.8.1.0-11.el9s                             centos-openstack-caracal                            30 k
 xstatic-json2yaml-common                               noarch                           0.1.1.0-10.el9s                             centos-openstack-caracal                           9.2 k

Transaction Summary
=====================================================


[root@controller-01 keystone]# yum install python3-osc-placement
Last metadata expiration check: 2:05:32 ago on Thu 23 Jan 2025 04:37:45 PM CET.
Dependencies resolved.
==============================================================================================================================================================================================
 Package                                            Architecture                        Version                                   Repository                                             Size
==============================================================================================================================================================================================
Installing:
 python3-osc-placement                              noarch                              4.3.0-1.el9s                              centos-openstack-caracal                               51 k

Transaction Summary
============================================================

Rabbit per nova e neutron

in caracal abbiamo deciso si utilizzare un rabbit dedicato per il servizio nova, uno per il servizio neutron e uno per tutti gli altri servizi. Va quindi ridefinita cell

Servizio nova usa rabbit-03
transport_url = rabbit://openstack:RABBIT_zzz@192.168.60.225:5672

Servizio neutron usa rabbit-02
transport_url = rabbit://openstack:RABBIT_zzz@192.168.60.224:5672

gli altri servizi (no keystone) usano rabbit-01

[root@controller-01 etc]# nova-manage cell_v2 list_cells --verbose
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+
|  Name |                 UUID                 |                   Transport URL                    |                      Database Connection                       | Disabled |
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                     none://///                     | mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova_cell0 |  False   |
| cell1 | 8fc9fbbe-697a-4d92-9ff6-cba3feb50b8e | rabbit://openstack:RABBIT_zzz@192.168.60.223:5672 |    mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova    |  False   |
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+


[root@controller-01 etc]# nova-manage cell_v2 update_cell --cell 8fc9fbbe-697a-4d92-9ff6-cba3feb50b8e --transport-url rabbit://openstack:RABBIT_zzz@192.168.60.225:5672 --database_connection mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova


[root@controller-01 etc]# nova-manage cell_v2 list_cells --verbose
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+
|  Name |                 UUID                 |                   Transport URL                    |                      Database Connection                       | Disabled |
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                     none://///                     | mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova_cell0 |  False   |
| cell1 | 8fc9fbbe-697a-4d92-9ff6-cba3feb50b8e | rabbit://openstack:RABBIT_zzz@192.168.60.225:5672 |    mysql+pymysql://nova:NOVA_xx_yyy@192.168.60.88:6306/nova    |  False   |
+-------+--------------------------------------+----------------------------------------------------+----------------------------------------------------------------+----------+

Aggiornare ceph a reef abilitando repo epel


[root@controller-01 log]# yum update \*ceph\* --enablerepo=epel
Last metadata expiration check: 1:23:23 ago on Mon 07 Apr 2025 12:52:12 PM CEST.
Dependencies resolved.
===================================================================================================================================================================================================================
 Package                                                  Architecture                              Version                                              Repository                                           Size
===================================================================================================================================================================================================================
Upgrading:
 abseil-cpp                                               x86_64                                    20211102.0-4.el9                                     epel                                                551 k
 ceph-common                                              x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                     18 M
 grpc-data                                                noarch                                    1.46.7-10.el9                                        epel                                                 19 k
 libarrow                                                 x86_64                                    9.0.0-13.el9                                         epel                                                4.4 M
 libarrow-doc                                             noarch                                    9.0.0-13.el9                                         epel                                                 25 k
 libcephfs2                                               x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    691 k
 librados2                                                x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    3.2 M
 libradosstriper1                                         x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    457 k
 librbd1                                                  x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    2.9 M
 librgw2                                                  x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    4.4 M
 parquet-libs                                             x86_64                                    9.0.0-13.el9                                         epel                                                838 k
 python3-ceph-argparse                                    x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                     46 k
 python3-ceph-common                                      x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    130 k
 python3-cephfs                                           x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    163 k
 python3-grpcio                                           x86_64                                    1.46.7-10.el9                                        epel                                                2.0 M
 python3-rados                                            x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    320 k
 python3-rbd                                              x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    299 k
 python3-rgw                                              x86_64                                    2:18.2.4-2.el9s                                      centos-ceph-reef                                    100 k
 re2                                                      x86_64                                    1:20211101-20.el9                                    epel                                                191 k
 thrift                                                   x86_64                                    0.15.0-4.el9                                         epel                                                1.6 M

Transaction Summary
===================================================================================================================================================================================================================
Upgrade  20 Packages

Riabilitare servizio puppet

systemctl enable puppet

Fare il reboot del nodo

shutdown -r now

Ricordarsi che il calendar delle GPU va installato a mano





  • No labels