How to configure TCP load balancing in Nginx
Assuming that the Kubernetes cluster has been configured, we will create a virtual machine for Nginx based on CentOS.
The following are the details of the settings in the experiment:
Nginx (CenOS8 Minimal) – 192.168.1.50
Kube Master – 192.168.1.40
Kube Worker 1 – 192.168.1.41
- ##Kube Worker 2 – 192.168.1.42
Step 1) Install the epel warehouse
Because the nginx software package is not in the default warehouse of the CentOS system, you need to install the epel warehouse:[root@nginxlb ~]# dnf install epel-release -y
Step 2) Install Nginx
Run the following command to install nginx:[root@nginxlb ~]# dnf install nginx -yUse the rpm command to verify the details of the Nginx package:
[root@nginxlb ~]# rpm -qi nginx
[root@nginxlb ~]# firewall-cmd --permanent --add-service=http[root@nginxlb ~]# firewall-cmd --permanent --add-service=https[root@nginxlb ~]# firewall-cmd –reloadUse the following command to set SELinux to permissive mode, and restart the system to make selinux shutdown take effect:
[root@nginxlb ~]# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config[root@nginxlb ~]# reboot
Step 3) Get the application’s NodePort details from Kubernetes
[kadmin@k8s-master ~]$ kubectl get all -n ingress-nginx
Step 4) Configure Nginx for load balancing
Edit the nginx configuration file and add the following:[root@nginxlb ~]# vim /etc/nginx/nginx.confComment out the "server" part ( From lines 38 to 57):
upstream backend { server 192.168.1.41:32760; server 192.168.1.42:32760; } server { listen 80; location / { proxy_read_timeout 1800; proxy_connect_timeout 1800; proxy_send_timeout 1800; send_timeout 1800; proxy_set_header Accept-Encoding ""; proxy_set_header X-Forwarded-By $server_addr:$server_port; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://backend; } location /nginx_status { stub_status; } }
[root@nginxlb ~]# systemctl start nginx[root@nginxlb ~]# systemctl enable nginx
Test Nginx’s TCP load balancer
To test whether nginx works as a TCP load balancer for Kubernetes Normal, please deploy a deployment based on nginx, expose the deployment port as port 80, and define the entry resource for the nginx deployment. I have used the following commands to deploy these Kubernetes objects:[kadmin@k8s-master ~]$ kubectl create deployment nginx-deployment --image=nginx deployment.apps/nginx-deployment created [kadmin@k8s-master ~]$ kubectl expose deployments nginx-deployment --name=nginx-deployment --type=NodePort --port=80 service/nginx-deployment exposedRun the following commands to get the deployments, svc and ingress details:
[root@localhost ~]# echo "192.168.1.50 nginx-lb.example.com" >> /etc/hostsTry to access nginx-lb.example.com through the browser
The above is the detailed content of How to configure TCP load balancing in Nginx. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

ArtGPT
AI image generator for creative art from text prompts.

Stock Market GPT
AI powered investment research for smarter decisions

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

1. The first choice for the Laravel MySQL Vue/React combination in the PHP development question and answer community is the first choice for Laravel MySQL Vue/React combination, due to its maturity in the ecosystem and high development efficiency; 2. High performance requires dependence on cache (Redis), database optimization, CDN and asynchronous queues; 3. Security must be done with input filtering, CSRF protection, HTTPS, password encryption and permission control; 4. Money optional advertising, member subscription, rewards, commissions, knowledge payment and other models, the core is to match community tone and user needs.

When Nginx experiences a "Toomyopenfiles" error, it is usually because the system or process has reached the file descriptor limit. Solutions include: 1. Increase the soft and hard limits of Linux system, set the relevant parameters of nginx or run users in /etc/security/limits.conf; 2. Adjust the worker_connections value of Nginx to adapt to expected traffic and ensure the overloaded configuration; 3. Increase the upper limit of system-level file descriptors fs.file-max, edit /etc/sysctl.conf and apply changes; 4. Optimize log and resource usage, and reduce unnecessary file handle usage, such as using open_l

The core role of Homebrew in the construction of Mac environment is to simplify software installation and management. 1. Homebrew automatically handles dependencies and encapsulates complex compilation and installation processes into simple commands; 2. Provides a unified software package ecosystem to ensure the standardization of software installation location and configuration; 3. Integrates service management functions, and can easily start and stop services through brewservices; 4. Convenient software upgrade and maintenance, and improves system security and functionality.

To solve the problem of inconsistency between PHP environment and production, the core is to use Kubernetes' containerization and orchestration capabilities to achieve environmental consistency. The specific steps are as follows: 1. Build a unified Docker image, including all PHP versions, extensions, dependencies and web server configurations to ensure that the same image is used in development and production; 2. Use Kubernetes' ConfigMap and Secret to manage non-sensitive and sensitive configurations, and achieve flexible switching of different environment configurations through volume mounts or environment variable injection; 3. Ensure application behavior consistency through unified Kubernetes deployment definition files (such as Deployment and Service) and include in version control; 4.

1. The mainstream frameworks of PHP e-commerce backend include Laravel (fast development, strong ecology), Symfony (enterprise-level, stable structure), Yii (excellent performance, suitable for standardized modules); 2. The technology stack needs to be equipped with MySQL Redis cache, RabbitMQ/Kafka message queue, Nginx PHP-FPM, and front-end separation is considered; 3. High concurrency architecture should be layered and modular, database read and write separation/distributed database, accelerated with cache and CDN, asynchronous processing of tasks, sharing of load balancing and Session, gradually microservice, and establish a monitoring and alarm system; 4. Multiple monetization paths include product price difference or platform commission, site advertising, SaaS subscription, customized development and plug-in market, API connection

In NGINX configuration, the @ symbols within the location block are used to define named locations. These are internally used endpoints and cannot be matched directly by the client request. They are usually called via the error_page, try_files, or rewrite directives. 1. The naming location starts with @. For example, location@notfound will not respond to direct requests, but trigger from other configuration parts; 2. It is often used for custom error handling, internal routing and backend agent backing; 3. For example, combined with try_files, forwarding to @backend when static files do not exist; 4. Notes include: not directly accessed, avoiding naming conflicts, and using descriptive names. Named locations can include

After modifying the Nginx configuration, you should first test the syntax and then reload the service. 1. Use nginx-t to check the configuration file syntax. If the prompt "syntaxisok" and "testissuccessful" are prompted, it means that it is correct; if there is an error, the specific problem line will be displayed. 2. If the configuration file permissions are high, you need to use sudonginx-t to execute. 3. Confirm that the test is actually loaded. You can specify the path through nginx-t-c/path/to/your/nginx.conf, or view the configuration file used by the main process through ps-ef|grepnginx. 4. After the test is passed, execute sudonginx-sreload overload service to make the new configuration take effect

To configure the PHP environment to support MongoDB, the core step is to install and enable the PHP driver of MongoDB to enable the PHP application to communicate with the MongoDB database. 1. Install MongoDBPHP driver, it is recommended to use PECL to install. If there is no PECL, you need to first install the PHP development package and related compilation tools; 2. Edit the php.ini file and add extension=mongodb.so (or .dll) to enable the extension; 3. Restart the web server or PHP-FPM service to make the configuration take effect; 4. Verify whether the extension is loaded successfully through phpinfo() or php-m. Frequently asked questions include missing PECL commands, compilation errors, php.ini
