diff options
| -rw-r--r-- | doc/book-enea-nfv-access-getting-started/doc/advanced_configurations.xml | 626 | ||||
| -rw-r--r-- | doc/book-enea-nfv-access-getting-started/doc/images/high_av_setup.png | bin | 0 -> 436204 bytes |
2 files changed, 626 insertions, 0 deletions
diff --git a/doc/book-enea-nfv-access-getting-started/doc/advanced_configurations.xml b/doc/book-enea-nfv-access-getting-started/doc/advanced_configurations.xml index 1b04c40..74ff1dd 100644 --- a/doc/book-enea-nfv-access-getting-started/doc/advanced_configurations.xml +++ b/doc/book-enea-nfv-access-getting-started/doc/advanced_configurations.xml | |||
| @@ -420,4 +420,630 @@ node0.1048576kB = 3 </programlisting> | |||
| 420 | </note> | 420 | </note> |
| 421 | </section> | 421 | </section> |
| 422 | </section> | 422 | </section> |
| 423 | |||
| 424 | <section id="high_availability_ig"> | ||
| 425 | <title>Installing the Enea uCPE Manager in High Availability Mode</title> | ||
| 426 | |||
| 427 | <para>The following describes the setup needed for running the Enea uCPE | ||
| 428 | Manager in High Availabilty (HA) mode, with a MariaDB database cluster. | ||
| 429 | The desired setup is depicted in the following diagram:</para> | ||
| 430 | |||
| 431 | <figure> | ||
| 432 | <title>The High Availability setup</title> | ||
| 433 | |||
| 434 | <mediaobject> | ||
| 435 | <imageobject> | ||
| 436 | <imagedata align="center" contentwidth="600" | ||
| 437 | fileref="images/high_av_setup.png" /> | ||
| 438 | </imageobject> | ||
| 439 | </mediaobject> | ||
| 440 | </figure> | ||
| 441 | |||
| 442 | <section id="ha_reqs"> | ||
| 443 | <title>Requirements for High Availability</title> | ||
| 444 | |||
| 445 | <para>The following hardware is needed for deploying the base configuration:</para> | ||
| 446 | |||
| 447 | <itemizedlist> | ||
| 448 | <listitem> | ||
| 449 | <para>Machines running the Enea uCPE Manager and MariaDB:</para> | ||
| 450 | |||
| 451 | <itemizedlist spacing="compact"> | ||
| 452 | <listitem> | ||
| 453 | <para>4 CPU cores</para> | ||
| 454 | </listitem> | ||
| 455 | |||
| 456 | <listitem> | ||
| 457 | <para>12 - 16 GB memory</para> | ||
| 458 | </listitem> | ||
| 459 | |||
| 460 | <listitem> | ||
| 461 | <para>256 - 512 GB hard disk</para> | ||
| 462 | </listitem> | ||
| 463 | </itemizedlist> | ||
| 464 | </listitem> | ||
| 465 | |||
| 466 | <listitem> | ||
| 467 | <para>Machines running only MariaDB:</para> | ||
| 468 | |||
| 469 | <itemizedlist spacing="compact"> | ||
| 470 | <listitem> | ||
| 471 | <para>2 CPU cores</para> | ||
| 472 | </listitem> | ||
| 473 | |||
| 474 | <listitem> | ||
| 475 | <para>8 GB memory</para> | ||
| 476 | </listitem> | ||
| 477 | |||
| 478 | <listitem> | ||
| 479 | <para>256 - 512 GB hard disk</para> | ||
| 480 | </listitem> | ||
| 481 | </itemizedlist> | ||
| 482 | </listitem> | ||
| 483 | |||
| 484 | <listitem> | ||
| 485 | <para>The Enea uCPE Manager machines should run CentOS 7, this is | ||
| 486 | the only currently supported version.</para> | ||
| 487 | </listitem> | ||
| 488 | |||
| 489 | <listitem> | ||
| 490 | <para>All machines should be on the same subnet. For geographically | ||
| 491 | distributed servers, a VPN can be used.</para> | ||
| 492 | </listitem> | ||
| 493 | |||
| 494 | <listitem> | ||
| 495 | <para>All VCPE devices will typically connect to the external IP | ||
| 496 | (WAN) address (exported by the Big-IP firewall).</para> | ||
| 497 | </listitem> | ||
| 498 | |||
| 499 | <listitem> | ||
| 500 | <para>WAN traffic will be HTTPS, whereas internal communication will | ||
| 501 | be through HTTP.</para> | ||
| 502 | </listitem> | ||
| 503 | |||
| 504 | <listitem> | ||
| 505 | <para>External clients (browsers using the GUI as well as clients | ||
| 506 | using the REST API) will connect to the external (WAN) | ||
| 507 | address.</para> | ||
| 508 | </listitem> | ||
| 509 | </itemizedlist> | ||
| 510 | </section> | ||
| 511 | |||
| 512 | <section id="firewall_rules"> | ||
| 513 | <title>Firewall Rules</title> | ||
| 514 | |||
| 515 | <para>The following firewall configuration is needed:</para> | ||
| 516 | |||
| 517 | <orderedlist> | ||
| 518 | <listitem> | ||
| 519 | <para>Disable <literal>SELINUX</literal> on all database servers by | ||
| 520 | editing <literal>/etc/sysconfig/selinux</literal> and changing the | ||
| 521 | following:</para> | ||
| 522 | |||
| 523 | <programlisting>SELINUX=disabled | ||
| 524 | SELINUXTYPE=targeted</programlisting> | ||
| 525 | </listitem> | ||
| 526 | |||
| 527 | <listitem> | ||
| 528 | <para>Reboot the server:</para> | ||
| 529 | |||
| 530 | <programlisting>[root@localhost ~]# sudo shutdown -r now</programlisting> | ||
| 531 | </listitem> | ||
| 532 | </orderedlist> | ||
| 533 | |||
| 534 | <para>The following ports should be opened in the local firewall (not | ||
| 535 | Big-IP), for each Enea uCPE Manager machine:</para> | ||
| 536 | |||
| 537 | <table> | ||
| 538 | <title>Ports for Enea uCPE Manager Machines</title> | ||
| 539 | |||
| 540 | <tgroup cols="2"> | ||
| 541 | <colspec align="left" /> | ||
| 542 | |||
| 543 | <thead> | ||
| 544 | <row> | ||
| 545 | <entry align="center">Port (Protocol)</entry> | ||
| 546 | |||
| 547 | <entry align="center">Usage</entry> | ||
| 548 | </row> | ||
| 549 | </thead> | ||
| 550 | |||
| 551 | <tbody> | ||
| 552 | <row> | ||
| 553 | <entry>80 (TCP)</entry> | ||
| 554 | |||
| 555 | <entry>HTTP (used by Big-IP firewall)</entry> | ||
| 556 | </row> | ||
| 557 | |||
| 558 | <row> | ||
| 559 | <entry>443 (TCP)</entry> | ||
| 560 | |||
| 561 | <entry>HTTPS</entry> | ||
| 562 | </row> | ||
| 563 | |||
| 564 | <row> | ||
| 565 | <entry>54327 (UDP)</entry> | ||
| 566 | |||
| 567 | <entry>Cluster multicasting (Hazelcast)</entry> | ||
| 568 | </row> | ||
| 569 | |||
| 570 | <row> | ||
| 571 | <entry>5701 - 5708 (TCP)</entry> | ||
| 572 | |||
| 573 | <entry>Hazelcast communications</entry> | ||
| 574 | </row> | ||
| 575 | |||
| 576 | <row> | ||
| 577 | <entry>4334 (TCP)</entry> | ||
| 578 | |||
| 579 | <entry>NETCONF call-home</entry> | ||
| 580 | </row> | ||
| 581 | |||
| 582 | <row> | ||
| 583 | <entry>7000 - 7009 (TCP)</entry> | ||
| 584 | |||
| 585 | <entry>Reverse SSH connection pool</entry> | ||
| 586 | </row> | ||
| 587 | </tbody> | ||
| 588 | </tgroup> | ||
| 589 | </table> | ||
| 590 | |||
| 591 | <para>For each MariaDB machine, the following firewall configuration is needed:</para> | ||
| 592 | |||
| 593 | <table> | ||
| 594 | <title>Ports for MariaDB Machines</title> | ||
| 595 | |||
| 596 | <tgroup cols="2"> | ||
| 597 | <colspec align="left" /> | ||
| 598 | |||
| 599 | <thead> | ||
| 600 | <row> | ||
| 601 | <entry align="center">Port (Protocol)</entry> | ||
| 602 | |||
| 603 | <entry align="center">Usage</entry> | ||
| 604 | </row> | ||
| 605 | </thead> | ||
| 606 | |||
| 607 | <tbody> | ||
| 608 | <row> | ||
| 609 | <entry>3306 (TCP)</entry> | ||
| 610 | |||
| 611 | <entry>Client connections</entry> | ||
| 612 | </row> | ||
| 613 | |||
| 614 | <row> | ||
| 615 | <entry>4567 (UDP/TCP)</entry> | ||
| 616 | |||
| 617 | <entry>Galera cluster replication with multicasting</entry> | ||
| 618 | </row> | ||
| 619 | |||
| 620 | <row> | ||
| 621 | <entry>4568 (TCP)</entry> | ||
| 622 | |||
| 623 | <entry>Incremental state transfer</entry> | ||
| 624 | </row> | ||
| 625 | |||
| 626 | <row> | ||
| 627 | <entry>4444 (TCP)</entry> | ||
| 628 | |||
| 629 | <entry>State snapshot transfer</entry> | ||
| 630 | </row> | ||
| 631 | </tbody> | ||
| 632 | </tgroup> | ||
| 633 | </table> | ||
| 634 | |||
| 635 | <para>The following ports should be accessible externally and translated | ||
| 636 | to the Virtual IP side as shown below (by the Big-IP firewall):</para> | ||
| 637 | |||
| 638 | <table> | ||
| 639 | <title>Ports for Virtual IP</title> | ||
| 640 | |||
| 641 | <tgroup cols="3"> | ||
| 642 | <colspec align="left" /> | ||
| 643 | |||
| 644 | <thead> | ||
| 645 | <row> | ||
| 646 | <entry align="center">External Port (Protocol)</entry> | ||
| 647 | |||
| 648 | <entry align="center">Usage</entry> | ||
| 649 | |||
| 650 | <entry align="center">Local Port (Protocol)</entry> | ||
| 651 | </row> | ||
| 652 | </thead> | ||
| 653 | |||
| 654 | <tbody> | ||
| 655 | <row> | ||
| 656 | <entry>443 (TCP)</entry> | ||
| 657 | |||
| 658 | <entry>HTTPS to/back HTTP</entry> | ||
| 659 | |||
| 660 | <entry>80 (TCP)</entry> | ||
| 661 | </row> | ||
| 662 | |||
| 663 | <row> | ||
| 664 | <entry>4334 (TCP)</entry> | ||
| 665 | |||
| 666 | <entry>NETCONF call-home</entry> | ||
| 667 | |||
| 668 | <entry>4334 (TCP)</entry> | ||
| 669 | </row> | ||
| 670 | |||
| 671 | <row> | ||
| 672 | <entry>7000 - 7009 (TCP)</entry> | ||
| 673 | |||
| 674 | <entry>Reverse SSH connection pool</entry> | ||
| 675 | |||
| 676 | <entry>7000 - 7009 (TCP)</entry> | ||
| 677 | </row> | ||
| 678 | </tbody> | ||
| 679 | </tgroup> | ||
| 680 | </table> | ||
| 681 | </section> | ||
| 682 | |||
| 683 | <section id="ha_installation"> | ||
| 684 | <title>Installing High Availability</title> | ||
| 685 | |||
| 686 | <para>The Enea uCPE Manager can be installed in High Availability mode with | ||
| 687 | a MariaDB database cluster by performing the following steps. The mandatory | ||
| 688 | Java configuration is also detailed.</para> | ||
| 689 | |||
| 690 | <section id="ha_mariadb"> | ||
| 691 | <title>Installing and configuring the MariaDB cluster</title> | ||
| 692 | |||
| 693 | <para>Install the latest MariaDB packages on all servers.</para> | ||
| 694 | |||
| 695 | <note> | ||
| 696 | <para>The setup was tested using MariaDB 10.5.8, built for CentOS | ||
| 697 | 7.</para> | ||
| 698 | </note> | ||
| 699 | |||
| 700 | <para><emphasis role="bold">How to install MariaDB</emphasis></para> | ||
| 701 | |||
| 702 | <orderedlist> | ||
| 703 | <listitem> | ||
| 704 | <para>Make sure the following packages are installed:</para> | ||
| 705 | |||
| 706 | <programlisting>MariaDB-compat-10.5.8-1.el7.centos.x86_64 | ||
| 707 | MariaDB-common-10.5.8-1.el7.centos.x86_64 | ||
| 708 | MariaDB-server-10.5.8-1.el7.centos.x86_64 | ||
| 709 | MariaDB-client-10.5.8-1.el7.centos.x86_64 | ||
| 710 | galera-4-26.4.6-1.el7.centos.x86_64</programlisting> | ||
| 711 | |||
| 712 | <para>These provide the MariaDB server, client and the Galera | ||
| 713 | <literal>wsrep</literal> provider library.</para> | ||
| 714 | </listitem> | ||
| 715 | |||
| 716 | <listitem> | ||
| 717 | <para>Copy the <literal>wsrep</literal> template:</para> | ||
| 718 | |||
| 719 | <programlisting>[root@localhost ~]# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d</programlisting> | ||
| 720 | </listitem> | ||
| 721 | |||
| 722 | <listitem> | ||
| 723 | <para>Change the following configuration:</para> | ||
| 724 | |||
| 725 | <programlisting># Full path to wsrep provider library or 'none' | ||
| 726 | wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so | ||
| 727 | |||
| 728 | # Provider specific configuration options | ||
| 729 | #wsrep_provider_options= | ||
| 730 | |||
| 731 | # Logical cluster name. Should be the same for all nodes. | ||
| 732 | wsrep_cluster_name="ucpemanager" | ||
| 733 | |||
| 734 | # Group communication system handle | ||
| 735 | wsrep_cluster_address="gcomm://192.168.10.11,192.168.10.12,..,192.168.10.16" | ||
| 736 | |||
| 737 | # Human-readable node name (non-unique). Hostname by default. | ||
| 738 | wsrep_node_name=Node1 | ||
| 739 | # current node's name. set node name for each server in the cluster | ||
| 740 | |||
| 741 | # Base replication <address|hostname>[:port] of the node. | ||
| 742 | # The values supplied will be used as defaults for state transfer receiving, | ||
| 743 | # listening ports and so on. Default: address of the first network interface. | ||
| 744 | wsrep_node_address=192.168.10.11 | ||
| 745 | #current node's interface IP . must be set for each node in the cluster</programlisting> | ||
| 746 | |||
| 747 | <note> | ||
| 748 | <para>Steps 2 and 3 must be performed for each MariaDB node in | ||
| 749 | the cluster.</para> | ||
| 750 | </note> | ||
| 751 | </listitem> | ||
| 752 | |||
| 753 | <listitem> | ||
| 754 | <para>Bootstrap the first node in the cluster (identified by | ||
| 755 | <literal>Node1</literal> for example), by running:</para> | ||
| 756 | |||
| 757 | <programlisting>[root@localhost ~]# galera_new_cluster</programlisting> | ||
| 758 | |||
| 759 | <para>This script passes the | ||
| 760 | <literal>--wsrep-new-cluster</literal> to | ||
| 761 | <literal>mysqld</literal> which tells the node that there is no | ||
| 762 | pre-existing cluster to connect to. The node will create a new | ||
| 763 | UUID to identify the new cluster.</para> | ||
| 764 | |||
| 765 | <note> | ||
| 766 | <para>Do not execute this script when connecting to an existing | ||
| 767 | cluster. It will create a new UUID to identify the cluster | ||
| 768 | again, and the node won't reconnect to the old cluster.</para> | ||
| 769 | </note> | ||
| 770 | </listitem> | ||
| 771 | |||
| 772 | <listitem> | ||
| 773 | <para>Go to <literal>Node1</literal> and start the service:</para> | ||
| 774 | |||
| 775 | <programlisting>[root@localhost ~]# systemctl start mariadb</programlisting> | ||
| 776 | |||
| 777 | <para>Subsequently, start the service on the other servers.</para> | ||
| 778 | </listitem> | ||
| 779 | |||
| 780 | <listitem> | ||
| 781 | <para>Verify that the nodes have entered the cluster:</para> | ||
| 782 | |||
| 783 | <programlisting>[root@localhost ~]# mysql --host=localhost --user=root -p | ||
| 784 | MariaDB [(none)]> show status like 'wsrep_cluster_conf_%'; | ||
| 785 | +-----------------------+-------+ | ||
| 786 | | Variable_name | Value | | ||
| 787 | +-----------------------+-------+ | ||
| 788 | | wsrep_cluster_conf_id | 3 | | ||
| 789 | +-----------------------+-------+ | ||
| 790 | 1 row in set (0.001 sec)</programlisting> | ||
| 791 | </listitem> | ||
| 792 | |||
| 793 | <listitem> | ||
| 794 | <para>Run the initial configuration script (only once, on one of | ||
| 795 | the machines in the cluster):</para> | ||
| 796 | |||
| 797 | <programlisting>[root@localhost ~]# mysql_secure_installation | ||
| 798 | |||
| 799 | Switch to unix_socket authentication [Y/n] Y | ||
| 800 | Enabled successfully! | ||
| 801 | Reloading privilege tables.. | ||
| 802 | ... Success! | ||
| 803 | … | ||
| 804 | Change the root password? [Y/n] Y | ||
| 805 | New password: | ||
| 806 | Re-enter new password: | ||
| 807 | Password updated successfully! | ||
| 808 | Reloading privilege tables.. | ||
| 809 | ... Success! | ||
| 810 | … | ||
| 811 | Remove anonymous users? [Y/n] Y | ||
| 812 | ... Success! | ||
| 813 | … | ||
| 814 | Disallow root login remotely? [Y/n] Y | ||
| 815 | ... Success! | ||
| 816 | … | ||
| 817 | Remove test database and access to it? [Y/n] Y (optional) | ||
| 818 | - Dropping test database... | ||
| 819 | ... Success! | ||
| 820 | - Removing privileges on test database... | ||
| 821 | ... Success! | ||
| 822 | Reload privilege tables now? [Y/n] Y | ||
| 823 | ... Success! | ||
| 824 | |||
| 825 | Cleaning up... | ||
| 826 | |||
| 827 | All done! If you've completed all of the above steps, your MariaDB | ||
| 828 | installation should now be secure. | ||
| 829 | |||
| 830 | Thanks for using MariaDB!</programlisting> | ||
| 831 | </listitem> | ||
| 832 | |||
| 833 | <listitem> | ||
| 834 | <para>Create the initial database and grant access to it:</para> | ||
| 835 | |||
| 836 | <programlisting>[root@localhost application]# mysql --host=localhost --user=root -p | ||
| 837 | MariaDB [(none)]> CREATE DATABASE ucpemanager CHARACTER SET='utf8' \ | ||
| 838 | COLLATE='utf8_bin'; | ||
| 839 | Query OK, 1 row affected (0.004 sec) | ||
| 840 | |||
| 841 | MariaDB [(none)]> GRANT ALL PRIVILEGES ON ucpemanager.* \ | ||
| 842 | TO 'enea'@'%' IDENTIFIED BY 'somepassword' WITH GRANT OPTION;</programlisting> | ||
| 843 | </listitem> | ||
| 844 | </orderedlist> | ||
| 845 | </section> | ||
| 846 | |||
| 847 | <section id="ha_java_sdk_install"> | ||
| 848 | <title>Installing the Java SDK</title> | ||
| 849 | |||
| 850 | <para>The following steps describe the installation of Java 11 SDK on | ||
| 851 | the CentOS 7 machines that will run the Enea uCPE Manager | ||
| 852 | installation:</para> | ||
| 853 | |||
| 854 | <orderedlist> | ||
| 855 | <listitem> | ||
| 856 | <para>Install the following packages:</para> | ||
| 857 | |||
| 858 | <programlisting>java-11-openjdk-devel-11.0.10.0.9-0.el7_9.x86_64 | ||
| 859 | java-11-openjdk-11.0.10.0.9-0.el7_9.x86_64</programlisting> | ||
| 860 | </listitem> | ||
| 861 | |||
| 862 | <listitem> | ||
| 863 | <para>Check that java points to the current JRE:</para> | ||
| 864 | |||
| 865 | <programlisting>root@localhost ~]# java -version | ||
| 866 | openjdk version "11.0.10" 2021-01-19 LTS | ||
| 867 | OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS) | ||
| 868 | OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode, sharing)</programlisting> | ||
| 869 | |||
| 870 | <para>If it doesn't, then check the alternatives, and make sure | ||
| 871 | that java points to the JDK11 installation:</para> | ||
| 872 | |||
| 873 | <programlisting>[root@localhost ~]# alternatives --config java</programlisting> | ||
| 874 | </listitem> | ||
| 875 | |||
| 876 | <listitem> | ||
| 877 | <para>Set the <literal>JAVA_HOME</literal> environment variable | ||
| 878 | and update paths:</para> | ||
| 879 | |||
| 880 | <programlisting>export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac))))) | ||
| 881 | export PATH=$PATH:$JAVA_HOME/bin | ||
| 882 | export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar</programlisting> | ||
| 883 | |||
| 884 | <para>As an alternative, the variables can be written into the | ||
| 885 | <filename>.bashrc</filename> file, so that they load every time a | ||
| 886 | console is opened. To enable these settings for all users, add the | ||
| 887 | variables to <literal>/etc/environment</literal>.</para> | ||
| 888 | </listitem> | ||
| 889 | |||
| 890 | <listitem> | ||
| 891 | <para>The <literal>JAVA_HOME</literal> variable should point | ||
| 892 | to:</para> | ||
| 893 | |||
| 894 | <programlisting>[root@localhost ~]# echo $JAVA_HOME | ||
| 895 | /usr/lib/jvm/java-11-openjdk-11.0.10.0.9-0.el7_9.x86_64</programlisting> | ||
| 896 | </listitem> | ||
| 897 | </orderedlist> | ||
| 898 | </section> | ||
| 899 | |||
| 900 | <section id="ha_ucpe_mg"> | ||
| 901 | <title>Installing the Enea uCPE Manager in High Availabilty | ||
| 902 | mode</title> | ||
| 903 | |||
| 904 | <para>These steps must be taken on each of the CentOS 7 machines that | ||
| 905 | will host the Enea uCPE Manager.</para> | ||
| 906 | |||
| 907 | <para>As the root user, go to the distribution folder of the Enea uCPE | ||
| 908 | Manager, and run:</para> | ||
| 909 | |||
| 910 | <programlisting>[root@localhost distro]#./install.sh /opt/ \ | ||
| 911 | Enea_NFV_Access_uCPEManager_2.3.0-build23.tar.gz | ||
| 912 | This will install uCPEManager into /opt/ucpemanager folder. | ||
| 913 | Select the following options, while asked by the installation script: | ||
| 914 | Are you using the embedded PostgreSQL database? [Y/N]: N | ||
| 915 | External database selected, getting user information ... | ||
| 916 | Press 1 for PostgreSQL, 2 for MariaDB, 3 for SQL Server, 4 for Oracle and 5 \ | ||
| 917 | for MySQL: 2 | ||
| 918 | Specify database server name(s) or IP Address(es): \ | ||
| 919 | 192.168.10.11,192.168.10.12,…,192.168.10.16 *(see note) | ||
| 920 | Specify database ID (or name) [ucpemanager]: | ||
| 921 | Specify database server port [3306]: | ||
| 922 | Specify database user name [root]: enea | ||
| 923 | Specify database password [root]: somepassword | ||
| 924 | Specify database startup thread pool size [1]: | ||
| 925 | Creating database configuration file \ | ||
| 926 | /opt//ucpemanager/application/config/databaseConfig.xml ... | ||
| 927 | Done . | ||
| 928 | … | ||
| 929 | Installing ucpemanager service .. | ||
| 930 | Specify service username [ucpemanager]: | ||
| 931 | Specify service password [ucpemanager]: somepassword | ||
| 932 | … | ||
| 933 | Specify the IP address of the local interface: 192.168.10.11 | ||
| 934 | Is this server part of a cluster? [Y/N]: Y | ||
| 935 | Specify the name of the cluster [ucpemanager]: | ||
| 936 | Specify the shared (virtual) cluster IP address: 192.168.10.10 | ||
| 937 | Specify the netmask for the cluster IP address [255.255.255.0]: | ||
| 938 | HA Configuration files modified successfully. | ||
| 939 | Configuration complete.</programlisting> | ||
| 940 | |||
| 941 | <note> | ||
| 942 | <para>For each Enea uCPE Manager installation, place the local | ||
| 943 | interface IP first in the list of IPs. This will optimize database | ||
| 944 | communication, since the Enea uCPE Manager uses the list of IPs | ||
| 945 | sequentially, therefore using the internal loopback interface for | ||
| 946 | communicating with the database.</para> | ||
| 947 | </note> | ||
| 948 | |||
| 949 | <para>Once the servers are up and running, log into the <emphasis | ||
| 950 | role="bold">Primary</emphasis> and go to <emphasis | ||
| 951 | role="bold">System</emphasis> and select <emphasis role="bold">Cluster | ||
| 952 | View</emphasis>. The list of Enea uCPE Managers should be displayed, | ||
| 953 | with one listed as Primary and the rest as Backup.</para> | ||
| 954 | </section> | ||
| 955 | </section> | ||
| 956 | |||
| 957 | <section id="ha_upgrade"> | ||
| 958 | <title>Upgrading a High Availability Deployment</title> | ||
| 959 | |||
| 960 | <para>Upgrading a High Availabilty deployment is a highly complex, | ||
| 961 | multi-step process that requires care to ensure both consistency and | ||
| 962 | high-availability. Some steps need to be done manually.</para> | ||
| 963 | |||
| 964 | <orderedlist> | ||
| 965 | <listitem> | ||
| 966 | <para>We start with the assumption that | ||
| 967 | <literal>ucpeManager-1</literal>is the "PRIMARY" server.</para> | ||
| 968 | </listitem> | ||
| 969 | |||
| 970 | <listitem> | ||
| 971 | <para>Shut down database services on one side of the network, for | ||
| 972 | example: MariaDB-4, MariaDB-5 and MariaDB-6.</para> | ||
| 973 | </listitem> | ||
| 974 | |||
| 975 | <listitem> | ||
| 976 | <para>Disconnect the network interfaces towards the VPN for machines | ||
| 977 | MariaDB-4, MariaDB-5 and MariaDB-6. This will prevent any attempts | ||
| 978 | at failover/synchronization.</para> | ||
| 979 | </listitem> | ||
| 980 | |||
| 981 | <listitem> | ||
| 982 | <para>Run the upgrade process on <literal>ucpeManager-3</literal> | ||
| 983 | and <literal>ucpeManager-4</literal>. This will upgrade the service | ||
| 984 | to the current release. Once the upgrade process completes, shutdown | ||
| 985 | the Enea uCPE Manager service on both machines.</para> | ||
| 986 | </listitem> | ||
| 987 | |||
| 988 | <listitem> | ||
| 989 | <para>Disconnect the <literal>ucpeManager-2</literal> machine from | ||
| 990 | the network (which will take MariaDB-2 offline as well). At this | ||
| 991 | point, only the "PRIMARY" server is running, this is the start of | ||
| 992 | the interval when we are susceptible to single-server | ||
| 993 | failure.</para> | ||
| 994 | </listitem> | ||
| 995 | |||
| 996 | <listitem> | ||
| 997 | <para>Shutdown the MariaDB-2 process and run the Enea uCPE Manager | ||
| 998 | upgrade process on <literal>ucpeManager-2</literal>. This will | ||
| 999 | upgrade the service to the current release. Once the upgrade process | ||
| 1000 | completes, shutdown the uCPE Manager service on the machine.</para> | ||
| 1001 | </listitem> | ||
| 1002 | |||
| 1003 | <listitem> | ||
| 1004 | <para>Reconnect the network interfaces towards the VPN for MariaDB-4 | ||
| 1005 | (<literal>ucpeManager-3</literal>), MariaDB-5 | ||
| 1006 | (<literal>ucpeManager-4</literal>) and MariaDB-6 | ||
| 1007 | (<literal>ucpeManager-2</literal>). Restart database services on | ||
| 1008 | MariaDB-2, MariaDB-4, MariaDB-5 and MariaDB-6. This will allow | ||
| 1009 | database services on all machines to synchronize, any data that has | ||
| 1010 | been modified during the upgrade process will be made | ||
| 1011 | consistent.</para> | ||
| 1012 | </listitem> | ||
| 1013 | |||
| 1014 | <listitem> | ||
| 1015 | <para>Shutdown the "Primary" server | ||
| 1016 | (<literal>ucpeManager-1</literal>). At this point, the service is no | ||
| 1017 | longer available.</para> | ||
| 1018 | </listitem> | ||
| 1019 | |||
| 1020 | <listitem> | ||
| 1021 | <para>Start the Enea uCPE Manager services on | ||
| 1022 | <literal>ucpeManager-2</literal>. This machine will come up as the | ||
| 1023 | new "PRIMARY" with the upgraded software. As part of the startup | ||
| 1024 | process, it will upgrade the database and perform any other | ||
| 1025 | upgrade-related functionality.</para> | ||
| 1026 | </listitem> | ||
| 1027 | |||
| 1028 | <listitem> | ||
| 1029 | <para>At this point (once startup completes), service is available. | ||
| 1030 | However, we are still susceptible to single-server failure.</para> | ||
| 1031 | </listitem> | ||
| 1032 | |||
| 1033 | <listitem> | ||
| 1034 | <para>Start the Enea uCPE Manager services on | ||
| 1035 | <literal>ucpeManager-3</literal> and | ||
| 1036 | <literal>ucpeManager-4</literal>. At this point, we are in | ||
| 1037 | highly-available mode.</para> | ||
| 1038 | </listitem> | ||
| 1039 | |||
| 1040 | <listitem> | ||
| 1041 | <para>Upgrade the Enea uCPE Manager on | ||
| 1042 | <literal>ucpeManager-1</literal> (the one that has been shut down). | ||
| 1043 | Once that upgrade is complete and the service restarts, the entire | ||
| 1044 | setup has been upgraded to the new version.</para> | ||
| 1045 | </listitem> | ||
| 1046 | </orderedlist> | ||
| 1047 | </section> | ||
| 1048 | </section> | ||
| 423 | </chapter> \ No newline at end of file | 1049 | </chapter> \ No newline at end of file |
diff --git a/doc/book-enea-nfv-access-getting-started/doc/images/high_av_setup.png b/doc/book-enea-nfv-access-getting-started/doc/images/high_av_setup.png new file mode 100644 index 0000000..e2edd67 --- /dev/null +++ b/doc/book-enea-nfv-access-getting-started/doc/images/high_av_setup.png | |||
| Binary files differ | |||
