Juniper IP PoolBot Installation guide

  • Hello! I am an AI chatbot trained to assist you with the Juniper IP PoolBot Installation guide. I’ve already reviewed the document and can help you find the information you need or explain it in simple terms. Just ask your questions, and providing more details will help me assist you more effectively!
IP PoolBot Installaon Guide
Published
2021-07-01
Juniper Networks, Inc.
1133 Innovaon Way
Sunnyvale, California 94089
USA
408-745-2000
www.juniper.net
Juniper Networks, the Juniper Networks logo, Juniper, and Junos are registered trademarks of Juniper Networks, Inc.
in the United States and other countries. All other trademarks, service marks, registered marks, or registered service
marks are the property of their respecve owners.
Juniper Networks assumes no responsibility for any inaccuracies in this document. Juniper Networks reserves the right
to change, modify, transfer, or otherwise revise this publicaon without noce.
IP PoolBot Installaon Guide
Copyright © 2021 Juniper Networks, Inc. All rights reserved.
The informaon in this document is current as of the date on the tle page.
YEAR 2000 NOTICE
Juniper Networks hardware and soware products are Year 2000 compliant. Junos OS has no known me-related
limitaons through the year 2038. However, the NTP applicaon is known to have some diculty in the year 2036.
END USER LICENSE AGREEMENT
The Juniper Networks product that is the subject of this technical documentaon consists of (or is intended for use
with) Juniper Networks soware. Use of such soware is subject to the terms and condions of the End User License
Agreement ("EULA") posted at hps://support.juniper.net/support/eula/. By downloading, installing or using such
soware, you agree to the terms and condions of that EULA.
ii
Table of Contents
About This Guide | iv
1
IP PoolBot Installaon
IP PoolBot Installaon | 2
IP PoolBot Installaon Overview | 2
IP PoolBot Installaon Requirements | 2
How to Install IP PoolBot | 5
How to Use the IP PoolBot Ulity and CLI Commands | 13
How to Access IP PoolBot Ulity Commands | 13
How to Start and Stop IP PoolBot Services | 15
How to Check the Status of IP PoolBot Services | 16
How to Display Kubernetes Objects | 18
How to Set Up IP PoolBot Logging | 19
How to Find the IP PoolBot Version | 22
How to Uninstall and Remove IP PoolBot | 22
How to Access IP PoolBot Conguraon and Operaonal Commands | 24
Accessing the IP PoolBot CLI | 24
How to Access and Use CLI Conguraon Statements | 25
How to Access and Use CLI Operaonal Commands | 25
iii
About This Guide
Use this guide to install IP PoolBot on a Linux server and learn to use IP PoolBot ulity and CLI
commands.
iv
1
CHAPTER
IP PoolBot Installaon
IP PoolBot Installaon | 2
How to Use the IP PoolBot Ulity and CLI Commands | 13
IP PoolBot Installaon
IN THIS SECTION
IP PoolBot Installaon Overview | 2
IP PoolBot Installaon Requirements | 2
How to Install IP PoolBot | 5
IP PoolBot Installaon Overview
IP PoolBot monitors the state of address pools on MX Series routers acng as broadband network
gateways (BNGs) in the network. When the free address ulizaon drops below a specied threshold on
a BNG under management, IP PoolBot adds unused prexes to the address pool. IP PoolBot improves
the eciency of address ulizaon and avoids the overhead and complexity of manual monitoring and
provisioning. IP PoolBot can oponally reclaim underulized pools for redistribuon of prexes.
IP PoolBot is a cloud-nave applicaon. It is automated, centralized, and container-based. It works with
Contrail HealthBot to improve the eciency of your network operaons. You can deploy IP PoolBot on
any hardware that meets the requirements.
This chapter describes how to install IP PoolBot. It is intended for network operators and administrators
who install, congure, and manage the network infrastructure. It specically explains:
IP PoolBot hardware and soware requirements
How to download and install IP PoolBot
How to adjust IP PoolBot setup parameters
IP PoolBot Installaon Requirements
IN THIS SECTION
IP PoolBot Hardware Requirements | 3
2
IP PoolBot Soware Requirements | 3
Operator-Provisioned Kubernetes Objects | 4
Network Device Requirements | 4
Addional Requirements | 5
IP PoolBot requires the following hardware and soware components on the host machine.
IP PoolBot Hardware Requirements
You can install IP PoolBot on a physical machine or on a virtual machine. Conrm that your equipment
meets the following minimum requirements.
Proof-of-concept (POC) system:
RAM: 32 GB
Disk space: 10 GB or more in /var/local
CPU cores: 6; hyperthreading is desirable
Producon system:
RAM: 512 GB
Disk space: 2 TB SSD
CPU cores: 64 or 128 with hyperthreading support (64x2)
IP PoolBot Soware Requirements
Conrm that the following soware with the listed versions is installed.
Either of the following for your IP PoolBot host machine:
Ubuntu version 18.04 LTS; we recommend installing Ubuntu as one large disk paron
Red Hat Enterprise Linux (RHEL) 7.7 or higher
If you use mulple parons, IP PoolBot data is wrien to the /var/local directory.
Docker version 18.09.9 or greater
Kubernetes v1.16.x
3
HealthBot version 2.0.2
NOTE: HealthBot must be running before you install IP PoolBot. See Contrail HealthBot
Installaon Guide for informaon about installing and seng up HealthBot.
NOTE: IP PoolBot supports only a single instance of HealthBot.
Operator-Provisioned Kubernetes Objects
You must provision the following Kubernetes objects that IP PoolBot requires:
A persistent volume of 5 GiB or larger for the IP PoolBot database to store snapshots and transacon
logs to provide persistent recovery. The persistent volume must have read-write-many (RWX) access.
BEST PRACTICE: We recommend that you provide 10 GiB for the database persistent
volume.
A persistent volume of 100 MiB or larger for IP PoolBot to store dynamic conguraon les for
conguraon recovery. The persistent volume must have read-write-many (RWX) access.
Docker and the local Docker image store. A private Docker registry is required to make container
images available to the worker nodes in a cluster.
Although it is not required, it is very useful to provide a centralized logging facility at the operator layer
to capture logs from mulple restarts for a given pod. Kubernetes by default retains logs for only one
previous incarnaon.
You can choose which volume plug-in to use for the persistent volume. However, the plug-in must
support ReadWriteMany (RWX) access, because both the master nodes and the worker nodes will write
to the persistentVolumeClaim.
You can also choose whether to set the reclaim policy for the persistent volumes appropriate to your
overall storage management strategy. Claims against these persistent volumes will be withdrawn only
when you uninstall IP PoolBot.
Network Device Requirements
A Juniper Networks MX Series router or vMX running Junos OS Release 18.3R3 or later.
4
Addional Requirements
Conrm all of the following:
The IP PoolBot server has access to the Internet during installaon.
You have a Juniper.net user account with permissions to download the IP PoolBot soware package.
You know the IP address of the HealthBot server.
You have login credenals for the HealthBot user interface with sucient access to install updates to
the HealthBot installaon.
HealthBot is running.
How to Install IP PoolBot
Before you begin, conrm that you have met the hardware and soware requirements for the IP PoolBot
installaon.
You can download the IP PoolBot soware package as either of the following:
Debian (.deb) package le for installaon on Ubuntu
RPM (.rpm) package le for installaon on RHEL
The Debian and RPM package managers create the /var/local/poolbot directory as part of the
installaon process. The package manager installs the contents of the IP PoolBot package in this
directory. The package manager also installs any external module dependencies that are necessary for
the operaon of IP PoolBot.
The general workow for installing IP PoolBot on Ubuntu and RHEL is shown in Figure 1 on page 5.
Figure 1: Installaon Workow - IP PoolBot on Ubuntu and RHEL
Part 1 - PREPARE
5
1. Ensure that the Linux package lists on your host system are current.
• Ubuntu
$ sudo apt update
• RHEL
$ sudo yum check-update
2. (Oponal) If needed, install the newest versions of all currently installed packages.
• Ubuntu
$ sudo apt upgrade
• RHEL
$ sudo yum update
3. Install the wget package. You use this tool later to download the IP PoolBot soware package.
NOTE: wget is one way to download the soware package, but it is not required. You can use
any valid method to download the package.
• Ubuntu
$ sudo apt install -y wget
• RHEL
$ sudo yum install -y wget
Part 2 - DOWNLOAD
1. Download the IP PoolBot package from the Juniper Networks soware download page to a
temporary directory (like /var/tmp) on the server.
6
• Ubuntu
wget -O /<temp-directory>/ip-poolbot-<version>.deb "<URL-from-the-software-
download-page>
• RHEL
wget -O /<temp-directory>/ip-poolbot-<version>.rpm "<URL-from-the-software-
download-page>
NOTE: You can also download the IP PoolBot package locally and push it to the IP PoolBot
server, if you prefer.
Part 3 - INSTALL
1. Install the .deb package with the following format:
• Ubuntu
$ sudo apt install -y /temp-directory/ip-poolbot-package-name.deb
• RHEL
$ sudo yum install -y /temp-directory/ip-poolbot-package-name.rpm
The installer checks whether prerequisite soware is installed on your host device during this step. If
the installer discovers any required soware is missing, it prompts you before installing those missing
soware packages.
For example:
$ sudo apt install -y /var/tmp/ip-poolbot-2.0.0.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'ip-poolbot' instead of '/var/tmp/ip-poolbot-2.0.0.deb'
The following NEW packages will be installed:
7
ip-poolbot
...
Need to get 0 B/687 MB of archives.
After this operation, 696 MB of additional disk space will be used.
Get :1 /var/tmp/ip-poolbot-2.0.0.deb ip -poolbot all 2.0.0 [687 MB]
Selecting previously unselected package ip-poolbot.
...
Preparing to unpack .../ip-poolbot-2.0.0.deb
Pre-installation..
No resources found in jnpr-ip-poolbot namespace.
Completed.
Unpacking ip-poolbot (2.0.0) ...
Setting up ip-poolbot (2.0.0) ...
Post installation...
Creating /usr/local/bin softlink for poolbot utility
Completed.
Scanning processes...
Scanning candidates...
Scanning processor microcode...
Scanning linux images...
Restarting services...
systemctl restart autofs.service
Service restarts being deferred:
systemctl restart unattended-upgrades.service
No containers need to be restarted.
No user sessions are running outdated binaries.
2. Run setup to congure your installaon.
If you are installing IP PoolBot on the same system where HealthBot is installed:
$ sudo poolbot setup
If you are installing IP PoolBot on a dierent system than where HealthBot is installed:
$ sudo poolbot setup --healthbot healthbot-ip-address
8
NOTE:
healthbot-ip-address
is the IP address or fully qualied domain name of the
HealthBot host.
To skip modicaons to the HealthBot conguraon that aect IP PoolBot:
$ sudo poolbot setup --no-healthbot-prep
This opon is useful when you are upgrading your version of IP PoolBot and you have previously
modied HealthBot support for IP PoolBot to suit your needs.
The setup command does all of the following:
Checks the run-me environment compability for IP PoolBot. This includes verifying that
supported versions of Ubuntu or RHEL, Docker, Docker Compose, and HealthBot are installed. It
also checks whether HealthBot is running. Any errors are printed to the terminal; for example,
Docker is not installed on this system.
Loads the container images to the local docker repository.
Prepares the HealthBot installaon for IP PoolBot integraon.
Inializes the IP PoolBot conguraon.
For example:
$ sudo poolbot setup --healthbot 10.0.2.20
Checking base OS compatibility ...ok
Checking Docker compatibility ...ok
Checking Kubernetes compatibility ...ok
Verifying installation ...ok
Enter a login name on remote HealthBot system with admin privileges to /var/
local/healthbot/input path (default is test-u) >
Enter password for test-u on remote HealthBot system >
Cleaning up any IP PoolBot Kubernetes objects ...ok
Enter the FQDN or IP address of the host running the container registry >
Enter the name of the registry container (default is registry) >
Enter the port number on which the registrar is listening for requests
(Default is 5000) >
Enter the name of the persistent volume for IP PoolBot configuration storage
> jnpr-ipb-opcfg-pv
Enter the name of the persistent volume for IP PoolBot database persistent
storage > jnpr-ipb-db-pv
9
Does the cluster have an ingress load-balancer controller for supplying
external IP addresses (Y or n)? > n
Enter the IP address to use as the external IP address for services (default
is 10.9.166.84) >
Generating Kubernetes environment file ...ok
Cleaning local Docker repository of IP PoolBot images:
No IP PoolBot images found in local docker repository
Marking IP PoolBot images in registry for deletion ...ok
Running registry garbage collection ok
Loading IP PoolBot docker container images
Adding IP PoolBot images to registrar
Preparing remote HealthBot installation at address 10.0.2.20
Copying HealthBot UDx scripts to HealthBot installation ...ok
Modifying HealthBot alerts container to support IP PoolBot UDA
script ...ok
Creating ip-jnpr-ip-poolbot namespace ...ok
Creating external service for message broker ...ok
Creating external cMGD NETCONF service ...ok
Creating external dbHaMon0Svc ...ok
Creating external dbHaMon1Svc ...ok
Creating external dbHaMon2Svc ...ok
Creating config map for poolbot services ...ok
Creating persistent volume claim for database ...ok
Creating persistent volume claim for operational configuration ...ok
*** setup is complete! Start IP PoolBot using the ’poolbot start’ command
IP PoolBot installaon and setup is now complete. Use the following command to verify the
installaon:
• Ubuntu
$ apt list --installed
...
ip-poolbot/now 2.0.0 all [installed.local]
• RHEL
$ yum list installed
...
ip-poolbot/now 2.0.0 all [installed.local]
10
3. Verify the installaon.
a. Verify the IP PoolBot version.
$ poolbot version
PoolBot Version 2.0.0
b. Verify that all Kubernetes objects are in Present or Bound state.
$ poolbot objects
Name Type Status
Details
jnpr-ipb-cmgd-netconf External Service present External
IP(s):['10.9.166.84'], Cluster IP:10.107.70.246
jnpr-ipb-redis-haproxy-svc External Service present External
IP(s):['10.9.166.84'], Cluster IP:10.103.180.250
jnpr-ipb-db-pvc Persistent Vol Claim Bound Vol: jnpr-
ipb-db-pv, Acc(s): ['RWX'], Capy: 5Gi
jnpr-ipb-opcfg-pvc Persistent Vol Claim Bound Vol: jnpr-
ipb-opcfg-pv, Acc(s): ['RWX'], Capy: 100Mi
jnpr-ipb-cfg Config Map present Map:
['haproxy.conf', 'juniper.conf', 'redis.conf']
Part 4 - START
1. Enter poolbot start to start IP PoolBot services.
For example:
$ poolbot start
Starting service db... ......0 .................1 ok
Starting service cmgd... ok
Starting service dbHaMon... .........0 ..............1 ............2 ok
Starting service haproxy... ........ ok
Starting service cfg-man... ...................... ok
Starting service addr-man... ok
Starting service ent-man... ............. ok
Starting service prov-man... ok
Starting service thresh-man... ok
11
NOTE: This command starts the IP PoolBot services in order of dependency. Essenal
services (db and cmgd) are started rst, followed by the other services.
2. Enter poolbot status to verify that the IP PoolBot services are up and running.
For example:
$ poolbot status
SERVICE STATE RESTARTS UP TIME NODE POD
addr-man Running 0 1 day, 16:09:13.378289 test-node-2 jnpr-
ipb-addrman-7ccb5fb598-tf545
cfg-man Running 0 1 day, 16:09:20.378395 test-node-2 jnpr-
ipb-cfgman-654f97c77c-4hkdc
cmgd Running 0 1 day, 16:09:21.378456 test-node-1 jnpr-
ipb-cmgd-7d749459b-qvqfx
ent-man Running 0 1 day, 16:09:12.378506 test-node-2 jnpr-
ipb-entman-5f988b8bd6-nhr7g
haproxy Running 2 1 day, 16:09:20.378551 test-node-2 jnpr-
ipb-haproxy-7f4cddf85-bkpdq
haproxy Running 0 1 day, 16:09:21.378593 test-node-1 jnpr-
ipb-haproxy-7f4cddf85-fv87q
prov-man Running 0 1 day, 16:09:09.378636 test-node-1 jnpr-
ipb-provman-79d6898d54-ttldj
db-0 Running 0 1 day, 16:09:59.378676 test-node-2 jnpr-
ipb-redis-0
db-1 Running 0 1 day, 16:09:47.378716 test-node-1 jnpr-
ipb-redis-1
dbHaMon-0 Running 0 1 day, 16:09:26.378755 test-node-2 jnpr-
ipb-redis-sentinels-0
dbHaMon-1 Running 0 1 day, 16:09:17.378794 test-node-1 jnpr-
ipb-redis-sentinels-1
dbHaMon-2 Running 0 1 day, 16:09:09.378832 test-node-1 jnpr-
ipb-redis-sentinels-2
thresh-man Running 0 1 day, 16:09:07.378875 test-node-1 jnpr-
ipb-threshman-647f66b99c-9swvb
NOTE: Collect the logs for a service and contact the Juniper Networks Technical Assistance
Center (JTAC) when either of the following occurs:
12
The service is not running.
The service’s upme compared to other services indicates that it has restarted.
How to Use the IP PoolBot Ulity and CLI
Commands
IN THIS SECTION
How to Access IP PoolBot Ulity Commands | 13
How to Start and Stop IP PoolBot Services | 15
How to Check the Status of IP PoolBot Services | 16
How to Display Kubernetes Objects | 18
How to Set Up IP PoolBot Logging | 19
How to Find the IP PoolBot Version | 22
How to Uninstall and Remove IP PoolBot | 22
How to Access IP PoolBot Conguraon and Operaonal Commands | 24
How to Access IP PoolBot Ulity Commands
The IP PoolBot ulity script (poolbot) enables you to administer the applicaon and to access the CLI
that congures the address management funcons. The IP PoolBot installaon places the ulity script
in /var/local/poolbot/bin and creates a symbolic link to the script in /usr/local/bin/poolbot.
The poolbot ulity script uses the Kubernetes kubectl ulity commands to create and delete objects,
access logs, conduct interacve sessions with Pod containers, and to get and describe the state of the IP
PoolBot objects. Using the poolbot ulity script simplies many of your administrave dues, because it
performs the tasks you need to manage IP PoolBot, but masks the complexity of the kubectl command.
Table 1 on page 14 lists the commands that you can invoke with the poolbot ulity script. Many of the
individual commands have opons that you can specify.
13
Table 1: IP PoolBot Ulity Script Commands
Name Acon
cli Access the CLI that enables you to congure IP PoolBot features and monitor current
status for managed BNGs.
db Connect to the IP PoolBot database CLI.
kill Stop and then restart one or more specied services.
NOTE: This command can have unexpected results. Consider whether you can accomplish
your goal by restarng IP PoolBot instead.
logs Display IP PoolBot logs.
objects Display the Kubernetes objects authored by IP PoolBot that are necessary for
orchestrang the IP PoolBot pods.
plugin Display informaon about external IP PoolBot plug-ins.
setup Set up the IP PoolBot applicaon, part of the installaon process. Requires sudo privileges.
start Start a specic IP PoolBot service or all services.
status Display the current status of the IP PoolBot services.
stop Stop all IP PoolBot services.
uninstall Remove the IP PoolBot applicaon from the local system. Requires sudo privileges.
version Display the version number of the installed IP PoolBot applicaon.
The general form of issuing a command is this:
14
For a short opon:
$ poolbot command-name -option
For a long opon:
$ poolbot command-name ––option
To display a list of available commands with a brief descripon, use the help opon:
$ poolbot -h
$ poolbot -help
To display the opons for a specic command:
$ poolbot command-name -h
How to Start and Stop IP PoolBot Services
You can use the poolbot ulity script to start or stop all IP PoolBot services. The services are started in
order of dependency. Essenal services (db and cmgd) are started rst, followed by the other services.
The services are deleted in reverse order of dependency.
To start IP PoolBot services:
Start all services.
$ poolbot start
15
BEST PRACTICE: The ––services opon to start individual services or a list of services is
intended to be used only for troubleshoong under the guidance of a Juniper Networks support
representave.
To stop all IP PoolBot services:
Stop all services.
$ poolbot stop
How to Check the Status of IP PoolBot Services
You can use the poolbot ulity script to check the status of each IP PoolBot service (funconal
component) listed in Table 2 on page 16. The status shows whether a service is running, exited, or not
started. You can compare upme for the services to quickly see whether any service has been restarted.
Table 2: Services displayed with the status command
Service Service Pod
addr-man—Address manager jnpr-ipb-addrman
cfg-man—Conguraon manager jnpr-ipb-cfgman
cmgd—CLI management jnpr-ipb-cmgd
db—Redis (remote diconary server), which provides the persistent database
structure
jnpr-ipb-redis
dbHaMon—Redis sennel that monitors detects failures in the master
instance and elect a worker instance to serve as the new master instance
jnpr-ipb-redis-sennels
ent-man—Enty manager jnpr-ipb-entman
16
/