升级过程
以下是升级控制中心的说明。这是通常应该遵循的程序。下一章将介绍另一种过程。
请务必参考当前的 Paragon Active Assurance 安装指南。
-
完全禁用 和
netrounds-callexecuter
服务apache2
:sudo systemctl disable apache2 sudo systemctl disable netrounds-callexecuter
-
停止 所有 Paragon Active Assurance 服务:
sudo systemctl stop "netrounds-*" apache2 openvpn@netrounds
-
根据操作指南的备份产品数据一章进行备份,从“备份 PostgreSQL 数据库”部分开始。
此外,备份文件
/etc/netrounds/secret_key
并将其与备份存档一起保存:cp /etc/netrounds/secret_key /etc/netrounds/secret_key-41
-
备份 控制中心使用的磁盘或磁盘分区(或拍摄虚拟机快照)。
-
验证是否已停止所有服务:
sudo systemctl status "netrounds-*" apache2 openvpn@netrounds
如果某些服务未处于停止状态,请再次运行以下命令:
sudo systemctl stop "netrounds-*" apache2 openvpn@netrounds
如果问题仍然存在,请联系瞻博网络技术支持。
-
将 Ubuntu 从版本 18.04 升级到版本 22.04。这可以通过两个步骤完成,如下链接页面所述:
- 从 18.04 升级到 20.04 (单击“清除消息”链接以显示包含说明的页面。
- 从 20.04 升级到 22.04 (这里以版本 21.10 为起点,但同样可以从 20.04 开始。
-
验证 包含新控制中心版本的压缩包的完整性:
# Compute the checksum for the tar file and verify that it is equal to the SHA256 # checksum provided on the download page export CC_VERSION=4.2.0.54 sha256sum paa-control-center_${CC_VERSION}.tar.gz
-
打开控制中心的压缩包:
tar -xzf paa-control-center_${CC_VERSION}.tar.gz
-
安装 新的 控制中心 软件包。
请注意以下几点:
- 在文件中
/etc/netrounds/netrounds.conf
,您需要将设置PASSWORD_RESET_TIMEOUT_DAYS
PASSWORD_RESET_TIMEOUT
替换为 。前者以天为单位给出超时,而后者以秒为单位。 - 在文件中
/etc/netrounds/netrounds.conf
,您还可以选择配置SPEEDTEST_ADDRESS
设置(如果要使用速度测试)。这可以指向解析为的同一 IP 地址SITE_URL
,也可以有自己的主机名。
警告:系统将提示您覆盖现有配置文件。在继续之前,请阅读以下有关设置的所有信息。
注意:- 我们强烈建议您首先使用“D”选项检查旧配置和新配置之间的差异。在大多数情况下,您将希望通过按“N”(不覆盖)来保留旧设置。
- 包中提供的示例配置文件中可能提供了新的可选和更新的设置。我们建议您查看这些内容,并根据您的安装添加新选项。
警告:对于在 中找到的 Apache 配置文件
/etc/apache2/sites-available/
您需要按“Y”,这是“软件包维护者的版本”。
如果您安装了正确的 SSL 证书(根据推荐)而不是默认的 snakeoil 证书,您必须在 Debian 软件包安装完成后再次修改文件以指向和
SSLCertificateKeyFile
设置中的SSLCertificateFile
正确路径。请参阅《安装指南》“服务配置”一章的“SSL 证书配置”一节。sudo apt-get update sudo apt-get install ./paa-control-center_${CC_VERSION}/*.deb
- 在文件中
-
运行数据库迁移:
警告:如果已更改默认数据库密码,请确保在运行 之前
ncc migrate
也在文件的设置/etc/netrounds/plugin.yaml
中db-password
更改此密码。否则,命令将失败。注意:- 这是一个敏感的命令,在远程计算机上执行它时应小心。在这种情况下,强烈建议您使用类似(通常在流行的 Linux 发行版上默认安装)或
tmux
(运行以安装)之类的screen
程序,以便即使 ssh 会话中断,migrate 命令也会继续运行sudo apt-get install tmux
。 - 执行此命令需要相当长的时间。
sudo ncc migrate
- 这是一个敏感的命令,在远程计算机上执行它时应小心。在这种情况下,强烈建议您使用类似(通常在流行的 Linux 发行版上默认安装)或
-
将
/var/lib/netrounds/openvpn
所有者更改为netrounds
:sudo chown -R netrounds: /var/lib/netrounds/openvpn
-
重新启动 所有 Paragon Active Assurance 服务:
sudo ncc services restart
-
安装新的测试代理存储库和插件。
这些插件由测试代理应用程序使用。
TA_APPLIANCE_BUILD=4.2.0.34 TA_APPLICATION_BUILD=4.2.0.20 PLUGIN_BUILD=4.2.0.29 # Compute checksums for the repositories and verify that they match the # SHA256 checksums provided on the download page sha256sum paa-test-agent_${TA_APPLIANCE_BUILD}_all.deb sha256sum paa-test-agent-application_${TA_APPLICATION_BUILD}_all.deb sha256sum paa-test-agent-plugins_${PLUGIN_BUILD}_all.deb # Start the installation sudo apt-get install ./paa-test-agent_${TA_APPLIANCE_BUILD}_all.deb sudo apt-get install ./paa-test-agent-application_${TA_APPLICATION_BUILD}_all.deb sudo apt-get install ./paa-test-agent-plugins_${PLUGIN_BUILD}_all.deb
-
按 如下方式启用服务:
sudo ncc services enable apache2 sudo ncc services enable kafka sudo ncc services enable callexecuter
注意:如果 TimescaleDB 和指标服务预计在升级后运行,则还需要启用它们,因为它们在默认情况下未启用:
sudo ncc services enable timescaledb sudo ncc services enable metrics
-
重新启动 所有 Paragon Active Assurance 服务:
注意:必须执行此操作才能在升级后重新启动并运行服务。
sudo ncc services restart
-
要激活新配置,您还需要运行:
sudo systemctl reload apache2
-
使用命令检查系统是否已启动并正在运行
ncc status sudo systemctl status "netrounds-*"
-
执行以下操作以启用所有帐户中所有插件的最新版本:
ncc plugins edit enabled-version --all-plugins --latest-version --all-accounts
有关如何使用控制中心 CLI 管理插件的更多信息,请参阅“插件”下的应用程序内帮助。
- 登录到控制中心 GUI 并转至 “测试代理 ”视图。在可升级的每个测试代理旁边,将显示一个向上箭头图标。单击该图标以继续升级。
升级后格雷斯
在本节中, netrounds
我们将升级和 paa-plugins
数据库以使用 Postgres 14 而不是 Postgres 10。
完成以下步骤:
-
验证当前是否使用了 Postgres 10:
sudo -u postgres psql netrounds -c "SELECT version();"
预期输出为:
version -------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 10.23 (Ubuntu 10.23-0ubuntu0.18.04.2) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit (1 row)
如果上述命令报告 Postgres 14,请不要执行任何进一步的操作。
-
停止控制中心服务:
sudo ncc services stop
-
停止两个 Postgres 集群:
sudo -u postgres /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main stop sudo -u postgres /usr/lib/postgresql/14/bin/pg_ctl -D /var/lib/postgresql/14/main stop sudo systemctl stop postgresql
-
在执行实际升级之前,请运行以下检查:
cd /tmp sudo -u postgres \ /usr/lib/postgresql/14/bin/pg_upgrade \ -b /usr/lib/postgresql/10/bin \ -B /usr/lib/postgresql/14/bin \ -d /etc/postgresql/10/main \ -D /etc/postgresql/14/main \ -p 5432 \ -P 5434 \ --check
pg_upgrade
如果检查报告了不容易修复的错误,请联系瞻博网络技术支持。如果没有错误并
pg_upgrade
报告群集兼容,则可以继续升级。 -
升级后:
sudo -u postgres \ /usr/lib/postgresql/14/bin/pg_upgrade \ -b /usr/lib/postgresql/10/bin \ -B /usr/lib/postgresql/14/bin \ -d /etc/postgresql/10/main \ -D /etc/postgresql/14/main \ -p 5432 \ -P 5434
-
更改端口分配,以便 Postgres 10 使用端口 5434,Postgres 14 使用端口 5432。
将 port 的值
/etc/postgresql/14/main/postgresql.conf
更新为 5432:sudo vim /etc/postgresql/14/main/postgresql.conf
将 port 的值
/etc/postgresql/10/main/postgresql.conf
更新为 5434:sudo vim /etc/postgresql/10/main/postgresql.conf
-
postgresql
启动服务:sudo systemctl start postgresql
-
更改用户的密码
netrounds
:sudo -u postgres psql -c "alter user netrounds with encrypted password 'netrounds';"
-
运行统计信息优化器:
sudo -u postgres /usr/lib/postgresql/14/bin/vacuumdb --all --analyze-in-stages
-
启动控制中心服务:
sudo ncc services start
-
验证 Postgres 14 现在是否正用于
netrounds
数据库:sudo -u postgres psql netrounds -c "SELECT version();"
预期产出:
version ---------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 14.8 (Ubuntu 14.8-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, 64-bit (1 row)
sudo DJANGO_SETTINGS_MODULE=netrounds.settings.local django-admin shell -c "from django.db import connection; print(connection.cursor().connection.server_version)"
预期产出:
140008
-
验证控制中心是否正常工作并移除旧的群集数据:
sudo -u postgres sh delete_old_cluster.sh
-
(可选)删除 postgresql-10 和 postgresql-12 客户端/服务器软件包:
sudo apt purge postgresql-client-10 postgresql-10 postgresql-client-12 postgresql-12
升级 ConfD
如果 ConfD 服务已安装在“控制中心”中,请执行以下操作:
-
通过运行以下命令删除现有版本的
paa-netconf-yang
:sudo apt-get remove paa-netconf-yang python3-pycryptodomex python3-pysnmp
- 按照版本 4.2 的《安装指南》的“安装 ConfD”部分中的说明进行操作(“安装控制中心和相关任务”一章)
故障 排除
- 用户密码身份验证失败
- 找不到目标 WSGI 脚本
- 同源策略不允许读取远程资源
- openvpn@netrounds服务找不到 dh.pem 文件
- openvpn@netrounds服务报告弱 CA 密钥
- 由于与容器冲突,控制中心安装失败 - 通用软件包
用户密码身份验证失败
ncc migrate
如果命令失败并显示错误消息
Failed to connect to database error="pq: password authentication failed for user \"netrounds\"" db-host=localhost db-name=paa-plugins db-port=5432 ...
您必须按照上述警告中的说明更新文件中的/etc/netrounds/plugin.yaml
变量db-password
。编辑此文件,然后重新运行 ncc migrate
。
找不到目标 WSGI 脚本
如果您不小心为 Apache 配置文件选择了“N”(请参阅 上面的此步骤)并收到如下所示的错误消息
[wsgi:error] [pid 29401:tid 140567451211520] [client 127.0.0.1:37172] Target WSGI script not found or unable to stat: /usr/lib/python2.7/dist-packages/netrounds/wsgi.py
运行以下命令以重回正轨:
export CC_VERSION=4.2.0.54
dpkg-deb --fsys-tarfile paa-webapp_${CC_VERSION}_all.deb | tar -x --wildcards ./etc/apache2/sites-available/*.conf --strip-components 4
sudo mv netrounds*.conf /etc/apache2/sites-available/
sudo chown -R root:root /etc/apache2/sites-available/
sudo systemctl reload apache2
这会用更新包中的新配置覆盖旧配置。
同样,如果您安装了正确的 SSL 证书(如推荐的那样)而不是默认的蛇油证书,您必须在 Debian 软件包安装完成后再次修改文件以指向 和 SSLCertificateKeyFile
设置SSLCertificateFile
中的正确路径。请参阅《安装指南》“服务配置”一章的“SSL 证书配置”一节。
同源策略不允许读取远程资源
如果在 中/etc/netrounds/netrounds.conf
将 和 SPEEDTEST_ADDRESS
设置为SITE_URL
不同的值,则可能会出现此错误或类似错误。然后,您需要更改为ALLOWED_ORIGINS
/etc/netrounds/restol.conf
允许文件中的restol.conf
这两个值。实现此目的的最简单方法是删除以前分配给 ALLOWED_ORIGINS
的任何值。然后,该设置将获得一个默认值,该值允许 SITE_URL
和 SPEEDTEST_ADDRESS
如 中找到/etc/netrounds/netrounds.conf
。
openvpn@netrounds服务找不到 dh.pem 文件
如果发生这种情况,将给出如下所示的输出:
Sep 04 09:56:47 ip-10-0-0-11 systemd[1]: Stopped OpenVPN connection to netrounds. Sep 04 09:56:47 ip-10-0-0-11 systemd[1]: Starting OpenVPN connection to netrounds... Sep 04 09:56:47 ip-10-0-0-11 ovpn-netrounds[1741772]: --cipher is not set. Previous OpenVPN version defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers. Sep 04 09:56:47 ip-10-0-0-11 ovpn-netrounds[1741772]: Options error: --dh fails with '/var/lib/netrounds/openvpn/dh.pem': No such file or directory (errno=2) Sep 04 09:56:47 ip-10-0-0-11 ovpn-netrounds[1741772]: Options error: Please correct these errors. Sep 04 09:56:47 ip-10-0-0-11 ovpn-netrounds[1741772]: Use --help for more information. Sep 04 09:56:47 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Main process exited, code=exited, status=1/FAILURE Sep 04 09:56:47 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Failed with result 'exit-code'. Sep 04 09:56:47 ip-10-0-0-11 systemd[1]: Failed to start OpenVPN connection to netrounds. Sep 04 09:56:52 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Scheduled restart job, restart counter is at 9. Sep 04 09:56:52 ip-10-0-0-11 systemd[1]: Stopped OpenVPN connection to netrounds.
若要解决此问题,请运行以下命令:
sudo mv /var/lib/netrounds/openvpn/certs_by_serial/dh1024.pem /var/lib/netrounds/openvpn/ sudo chown -R netrounds: /var/lib/netrounds/openvpn sudo ncc services restart openvpn
openvpn@netrounds服务报告弱 CA 密钥
在这种情况下,输出将如下所示:
Aug 30 12:49:34 ip-10-0-0-11 systemd[1]: Starting OpenVPN connection to netrounds... Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: --cipher is not set. Previous OpenVPN version defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers. Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: WARNING: file '/var/lib/netrounds/openvpn/private/server.key' is group or others accessible Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 14 2022 Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10 Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts Aug 30 12:49:34 ip-10-0-0-11 systemd[1]: Started OpenVPN connection to netrounds. Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: OpenSSL: error:0A00018E:SSL routines::ca md too weak Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: Cannot load certificate file /var/lib/netrounds/openvpn/issued/server.crt Aug 30 12:49:34 ip-10-0-0-11 ovpn-netrounds[1848602]: Exiting due to fatal error Aug 30 12:49:34 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Main process exited, code=exited, status=1/FAILURE Aug 30 12:49:34 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Failed with result 'exit-code'. Aug 30 12:49:39 ip-10-0-0-11 systemd[1]: openvpn@netrounds.service: Scheduled restart job, restart counter is at 14918. Aug 30 12:49:39 ip-10-0-0-11 systemd[1]: Stopped OpenVPN connection to netrounds.
您需要做的是通过在文件末尾附加以下行来修改 /etc/openvpn/netrounds.conf
文件:
tls-cipher "DEFAULT:@SECLEVEL=0"
然后重新启动 openpvn 服务:
sudo ncc services restart openvpn
由于与容器冲突,控制中心安装失败 - 通用软件包
有时,在 Ubuntu 系统升级期间,并非所有已弃用的软件包都会被删除,因此控制中心安装失败并显示以下错误消息:
... Selecting previously unselected package conmon. Preparing to unpack .../04-conmon_2.0.25+ds1-1.1_amd64.deb ... Unpacking conmon (2.0.25+ds1-1.1) ... Selecting previously unselected package golang-github-containers-image. Preparing to unpack .../05-golang-github-containers-image_5.16.0-3_all.deb ... Unpacking golang-github-containers-image (5.16.0-3) ... dpkg: error processing archive /tmp/apt-dpkg-install-KnNDVu/05-golang-github-containers-image_5.16.0-3_all.deb (--unpack): trying to overwrite '/etc/containers/registries.conf', which is also in package containers-common 100:1-14 Selecting previously unselected package golang-github-containers-common. Preparing to unpack .../06-golang-github-containers-common_0.44.4+ds1-1_all.deb ... Unpacking golang-github-containers-common (0.44.4+ds1-1) ... dpkg: error processing archive /tmp/apt-dpkg-install-KnNDVu/06-golang-github-containers-common_0.44.4+ds1-1_all.deb (--unpack): trying to overwrite '/etc/containers/policy.json', which is also in package containers-common 100:1-14 ... Errors were encountered while processing: /tmp/apt-dpkg-install-KnNDVu/05-golang-github-containers-image_5.16.0-3_all.deb /tmp/apt-dpkg-install-KnNDVu/06-golang-github-containers-common_0.44.4+ds1-1_all.deb needrestart is being skipped since dpkg has failed E: Sub-process /usr/bin/dpkg returned an error code (1)
在这种情况下,请运行 apt-cache rdepends --installed containers-common
命令以检查哪个包包含容器通用包。如果此命令返回以下输出,则可以删除 containers-common
软件包,然后重新安装控制中心。
apt-cache rdepends —-installed containers-common containers-common Reverse Depends:
若要删除 containers-common
包,请运行以下命令:
sudo apt-get purge containers-common