搭建keepalived和nginx高可用步骤

LVS+keepalived+nginx搭建高可用负载均衡集群(详细配置步骤讲解) 一.准备工作 首先我们要准备四台虚拟机如下表所示: 主机 IP MASTER 192.168.204.130 192.168.204.208(VIP) real_server1 192.168.204.135 real_server2 192.168.204.137 BACKUP 192.168.204.138 1.在主机和备机上都要安装LVS和keepalived: 安装LVS:yum install ipvsad... 阅读详情

 

环境信息说明:

ubutu-30 ubutu-31 分别安装keepalived 和nginx 使用apt-get install 安装,请自行百度

首先搭建keealived主备设备

keealived主节点

#configration File for keepalived

  global_defs {

  notification_email {
  aaa@qq.com
 }
    notification_email_from aa@qq.com
    smtp_server 127.0.0.1 #邮件服务器地址
    smtp_connect_timeout 30 #邮件服务器请求时间
    router_id LVS_01 #在不同keepalived服务不能一样

}

   vrrp_instance VI_1 {  #这个是一个实例
    state MASTER  #状态
    interface ens38
    virtual_router_id 51 #这里必须一样,不要就裂脑了
    priority 150 #优先级,master一般大于100
    advert_int 3 #心跳的间隔,如果对方3s没有收到消息,切换主机

    authentication {
        auth_type   PASS
        auth_pass   1111
    }


 virtual_ipaddress {
   192.168.13.150/24 # 子网掩码 255.255.255.0
   }
}

keepalived备节点

#configration File for keepalived

  global_defs {

  notification_email {
  aaa@qq.com
 }
    notification_email_from aa@qq.com
    smtp_server 127.0.0.1 #邮件服务器地址
    smtp_connect_timeout 30 #邮件服务器请求时间
    router_id LVS_02 #在不同keepalived服务不能一样

}

   vrrp_instance VI_1 {  #这个是一个实例
    state BACKUP  #状态
    interface ens38
    virtual_router_id 51 #这里必须一样,不要就裂脑了
    priority 100 #优先级,master一般大于100
    advert_int 3 #心跳的间隔,如果对方3s没有收到消息,切换主机

    authentication {
        auth_type   PASS
        auth_pass   1111
    }


 virtual_ipaddress {
   192.168.13.150/24 # 子网掩码 255.255.255.0
   }
}

启动keepalived主节点

root@ubuntu-131:~# cd /etc/keepalived/
root@ubuntu-131:/etc/keepalived# vim keepalived.conf
root@ubuntu-131:/etc/keepalived# /etc/init.d/keepalived
Usage: /etc/init.d/keepalived {start|stop|restart|reload|force-reload}
root@ubuntu-131:/etc/keepalived# /etc/init.d/keepalived  start
[ ok ] Starting keepalived (via systemctl): keepalived.service.
root@ubuntu-131:/etc/keepalived#
root@ubuntu-131:/etc/keepalived#
root@ubuntu-131:/etc/keepalived#
#或者采用第二种方式
root@ubuntu-131:/etc/keepalived# service keepalived start
root@ubuntu-131:/etc/keepalived#

 真实的keepalived脚本(出问题才查看)

#! /bin/sh
#
# keepalived   LVS cluster monitor daemon.
#
#              Written by Andres Salomon <dilinger@voxel.net>
#
### BEGIN INIT INFO
# Provides:          keepalived
# Required-Start:    $syslog $network $remote_fs
# Required-Stop:     $syslog $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts keepalived
# Description:       Starts keepalived lvs loadbalancer
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/keepalived
NAME=keepalived
DESC=keepalived
CONFIG=/etc/keepalived/keepalived.conf
TMPFILES="/tmp/.vrrp /tmp/.healthcheckers"

#includes lsb functions
. /lib/lsb/init-functions

test -f $CONFIG || exit 0
test -f $DAEMON || exit 0


# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

case "$1" in
  start)
        log_daemon_msg "Starting $DESC" "$NAME"
        for file in $TMPFILES
        do
                test -e $file && test ! -L $file && rm $file
        done
        if start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
               --exec $DAEMON -- $DAEMON_ARGS; then
                log_end_msg 0
        else
                log_end_msg 1
        fi
       ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        if start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec $DAEMON; then
                log_end_msg 0
        else
                log_end_msg 1
        fi
       ;;
  reload|force-reload)
        log_action_begin_msg "Reloading $DESC configuration..."
        if start-stop-daemon --stop --quiet --signal 1 --pidfile \
               /var/run/$NAME.pid --exec $DAEMON; then
               log_end_msg 0
        else
                log_action_end_msg 1
        fi
       ;;
  restart)
        log_action_begin_msg "Restarting $DESC" "$NAME"

        start-stop-daemon --stop --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON || true
       sleep 1
       if start-stop-daemon --start --quiet --pidfile \
               /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_ARGS; then
               log_end_msg 0
        else
                log_end_msg 1
        fi
       ;;
  *)
       echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}" >&2
       exit 1
       ;;
esac

exit 0

keepalived启动日志位置(在/var/log/syslogs下)


root@ubuntu-130:/var/log# tail -f syslog
syslog       syslog.1     syslog.2.gz  syslog.3.gz  syslog.4.gz  syslog.5.gz  syslog.6.gz  syslog.7.gz
root@ubuntu-130:/var/log# tail -f syslog
syslog       syslog.1     syslog.2.gz  syslog.3.gz  syslog.4.gz  syslog.5.gz  syslog.6.gz  syslog.7.gz
root@ubuntu-130:/var/log# tail -f ryslog
tail: 无法打开'ryslog' 读取数据: 没有那个文件或目录
tail: 没有剩余文件
root@ubuntu-130:/var/log# tail -f syslog
Jan 27 23:10:12 ubuntu-130 dbus[1140]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Jan 27 23:10:12 ubuntu-130 systemd[1]: Started Network Manager Script Dispatcher Service.
Jan 27 23:10:12 ubuntu-130 nm-dispatcher: req:1 'dhcp4-change' [ens38]: new request (1 scripts)
Jan 27 23:10:12 ubuntu-130 nm-dispatcher: req:1 'dhcp4-change' [ens38]: start running ordered scripts...
Jan 27 23:11:40 ubuntu-130 systemd[1]: Started Keepalive Daemon (LVS and VRRP).
Jan 27 23:11:49 ubuntu-130 systemd[1]: Starting nginx - high performance web server...
Jan 27 23:11:49 ubuntu-130 systemd[1]: Started nginx - high performance web server.
Jan 27 23:17:01 ubuntu-130 CRON[10157]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jan 27 23:20:13 ubuntu-130 systemd[1]: Started Session 21 of user root.
Jan 27 23:20:13 ubuntu-130 systemd[1]: Started Session 22 of user root.

发现在keepalived主节点的ens38网卡上,绑定了一个浮动IP(关键)

 说明已经正常启动keepalived

root@ubuntu-130:/var/log# ps -ef | grep keepal
root       9203      1  0 22:59 ?        00:00:00 /usr/sbin/keepalived
root       9204   9203  0 22:59 ?        00:00:00 /usr/sbin/keepalived
root       9205   9203  0 22:59 ?        00:00:00 /usr/sbin/keepalived
root       9959   6197  0 23:14 pts/19   00:00:00 vim keepalived.conf
root      11041   5510  0 23:25 pts/20   00:00:00 grep --color=auto keepal

 

同理,将keepalived备节点启动,发现虚拟在ens38上虚拟的IP没有映射带备节点上,

至此主备keepalived搭建完成,

主备倒换:

将主节点ubutu-30宕机(重启),或者keepalived关闭,则发现虚拟浮动ip映射到备节点上,即ubutu-31

备节点重新接管浮动ip 192.168.13.150,当主节点重启完成,重新接管浮动ip

整合nginx和keepalived

ubutu-30 和ubutu-31 的nginx服务都起来了,并且是全ip监听,

root@ubuntu-130:~# netstat -luntp | grep nginx
tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN      2021/nginx.conf
tcp        0      0 0.0.0.0:8002            0.0.0.0:*               LISTEN      2021/nginx.conf
tcp        0      0 0.0.0.0:8003            0.0.0.0:*               LISTEN      2021/nginx.conf
root@ubuntu-130:~#

http://192.168.13.135:8001/index.html 浮动ip就可以访问 nginx的web服务

当ubutu-30宕机,浏览器还可以根据keealived的主备切换能力,将浮动ip 转到 utubu-31上,进而访问ubutu-31上nginx的web服务。

 

思考几个问题:

1.需要将keepalived设置跟随操作系统一起启动,

2.nginx是如何保证nginx挂掉后,不断重拉的呢?

 

 

搭建Nginx高可用集群(keepalived+双机热备) 一、Nginx高可用 首先了解一下什么是高可用,高可用是分布式系统架构中必须考虑的因素。 我们都知道,使用nginx的反向代理和负载均衡可以解决tomcat等web容器的单点故障以及高并发等问题。 反向代理是指以代理服务器来接收浏览器的请求,然后再将请求转发到内网的服务器,然后再将从服务器上得到的结果返回给客户端。负载均衡就是要解决一个web服务器压力过大的问题,此时可以通过多个web服务器根据不同的算法将并发过来的请求分配到多个服务器上,从而减轻单个服务器压力过大的问题。 这样的话,当一台web服 阅读详情

相关推荐

linux集群 keepalived+nginx实现高可用集群

工作时 master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。check模块负责健康检查;脚本返回1,表示nginx进程不存在,由于上面配置的weight为负数,priority 会减少,减少后的值 priority = priority+weight。●测试的时候,如果关闭nginx服务,虚拟ip还是在master上,那就是由于脚本的设计,关闭nginx后服务又自动起来了,可以把脚本这一行注释掉即可。

Gao0Yuu的博客 1980

lvs+keepalived要点详解二

一.nat模式 nat模式原理中的要点: 请求到达调度器,ipvs对比数据包请求是否为集群服务,若是,修改数据包的目标ip地址为后端服务器ip,然后将数据包发至POSTROUTING链。此时报文的源ip为cip(客户端),目标ip为Rip(后端真实) 返回时: 调度器将源ip修改为自己的vip,然后相应给客户端。此时报文的源ip为vip,目标ip为cip。 要点一:icmp重定向 icmp重定向...

qq_37369726的博客 953

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不支持问题

本文详细解析了在国产麒麟系统上部署Kettle时遇到的aarch64架构不支持问题,提供了从获取适配的SWT库、修改启动脚本到生产环境调优的完整解决方案。文章重点解决了ARM架构与Java GUI工具的兼容性挑战,并分享了内存配置、字体显示及Carte服务部署等实战经验,助力用户在国产化环境中稳定运行ETL流程。

weixin_29197835的博客 560

keepalived介绍、安装及配置详解

keepalived起初是为LVS设计的专门用来监控集群系统中各个服务节点的状态如果某个服务节点出现异常或者工作出现故障,keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,keepalived又可以自动将该服务节点重新加入集群中,这些工作全部自动完成。这部分功能类似于nginx 等反向代理的应用探活功能实现后端服务高可用。

神棍之路 1万+

SAP开发实战:用FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本(附完整ABAP代码)

本文详细介绍了如何使用SAP的FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本,提供完整的ABAP代码实现方案。通过该BAPI,开发者可以高效完成财务凭证的批量修改,确保数据一致性和审计合规性,显著提升SAP财务模块的运维效率。

weixin_29224589的博客 380

三相电机控制中的端电压、相电压与线电压波形解析

本文深入解析了三相电机控制中端电压、相电压与线电压的核心概念与波形差异。通过对比方波控制、SPWM和SVPWM三种主流控制策略下的实测波形特征,揭示了不同控制逻辑对电压波形(如梯形波、正弦波、马鞍波)的影响。文章重点阐述了SVPWM控制如何通过生成马鞍波形端电压来提高直流母线电压利用率,并提供了实用的波形测量与调试指南,帮助工程师深入理解电机控制原理并进行有效调试。

qsc901234567的博客 1394

nginx+keepalive高可用搭建方案

当master机器出现故障时,keepalived第一时间收回虚拟IP地址并分配给slave机器,此时相当于slave机器升级为master机器,此时用户只需要记住keepalived的虚拟IP地址即可。keepalive是一个用于保持长连接的插件,它可以提高服务器的效率和稳定性。若master机器恢复正常,则不会被分配虚拟IP地址,直到slave机器出现故障后,master才会被分配虚拟IP地址。即master机器将会有两个ip地址,一个是自己的源ip,一个是keepalived给的虚拟IP地址。

qq_41118173的博客 7495

山景BP10_128DBG开发板通过蓝牙连接手机放歌实验回顾

最近在学习上海山景公司的BP10_128DBG的开发板,因为网上关于BP10开发板的帖子也比较少,在学习的时候也没有太多的参考资料,基本上都是官方的历程。蓝牙放歌这个demo对我来说也比较复杂,特写下此博客进行记录、总结,大家有需要的可以参考。

weixin_56646002的博客 2019

使用keepalived实现Nginx高可用

文章目录简介keepalived准备工作准备2台机器安装keepalived主配置文件备配置文件检查nginx进程的脚本测试启动keepalived停止主节点的keepalived服务恢复主节点keepalived服务 简介 正常情况下的应用系统都是多机器部署,通过nginx做负载均衡和网关来访问应用, 但是在实际场景中,会出现nginx所在的服务器因为特殊原因宕机或者网络异常,这个时候整个应用系统都会处于一个无法访问的状态,这个时候就需要keepalived这个神器了。 keepalived Keepal

皓亮君的博客 1985

泛微E10 eBuilder低代码平台避坑指南:新手最容易犯的5个错误及解决方案

本文针对泛微E10 eBuilder低代码平台的新手开发者,总结了5个最常见错误及解决方案,包括表单联动配置、流程设计权限、动作流时序、数据加工类型转换和权限管理过度配置等问题。通过实战经验和代码示例,帮助开发者避开常见陷阱,提升开发效率。

weixin_30919429的博客 540

医疗影像分析实战:肺炎X光片分类与分割

医疗影像分析实战:肺炎X光片分类与分割 ,人工智能,计算机视觉,大模型,AI,在医疗领域,医疗影像分析技术凭借其高效、精准的特点,成为疾病诊断与治疗的重要辅助手段。肺炎作为一种常见的呼吸道疾病,严重威胁人类健康,通过 X 光片对肺炎进行诊断是临床常用方法。利用计算机技术实现肺炎 X 光片的自动分类与分割,不仅能减轻医生的工作负担,还能提高诊断的准确性和效率。本文将深入讲解肺炎 X 光片分类与分割的实战过程,结合大量代码示例和关键概念解析,帮助读者掌握相关技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

keepalived + Nginx 实现高可用

nginx 高可用 ,keepalived + LVS

weixin_52834606的博客 2582

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 982

nginx+keepalived高可用搭建的详细步骤

nginx+keepalived高可用搭建的详细步骤

qq_37263429的博客 587

Python爬虫实战:构建药监局药品批准信息本地查询系统

在医药信息化时代,药品批准信息的快速查询对于医药从业者、研究人员和普通消费者都具有重要意义。国家药品监督管理局(NMPA)提供了官方的药品查询系统,但有时我们需要建立本地数据库以便批量分析或离线查询。本文将详细介绍如何使用Python爬虫技术,结合最新的异步爬虫框架和技术栈,构建一个完整的药监局药品信息本地查询系统。本系统将实现以下功能:自动化爬取药监局官网的药品批准信息数据清洗和结构化存储建立本地查询接口数据定期更新机制pythonimport os"""药品类型枚举"""

2201_76125261的博客 727

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

nginx搭配keepalived搭建高可用的详细步骤流程

在nginx主服务器上停掉nginx服务,浏览器中访问虚拟IP地址,可以看到nginx服务已经由备用服务器顶替上来。在两台nginx服务器上分别启动nginx服务,可以在浏览器中输入虚拟IP地址进行访问,可以看到请求的响应情况。通过keepalived和nginx的结合,可以实现nginx的高可用性,并且不会有单点故障的问题。启动成功后,可以在另一台机器上输入 ip addr 命令查看到虚拟IP的地址。二、安装keepalived。

qq_32856065的博客 373

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LVS+KeepAlived+Nginx高可用实现方案

文章目录概念LVSKeepAlived为什么要使用准备 这是一段血泪教程… 概念 LVS 什么是lvs LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 宗旨 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scal...

一行Java的博客 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Nginx 使用 Keepalived 搭建 nginx 高可用

两台装有 nginx 的 CentOS 虚拟机。

matrixlzp的博客 2352

8. Nginx 配合 + Keepalived 搭建高可用集群

在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。

weixin_61635597的博客 1524

Keepalived+Nginx高可用配置指南

NginxNginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以其出色的性能、稳定性和丰富的功能而广受好评。Nginx可以作为静态网页服务器、反向代理服务器、负载均衡器等多种角色。KeepalivedKeepalived是一个基于VRRP协议的高可用性解决方案。它主要用于Linux系统,提供负载均衡和故障转移功能。当主服务器出现问题时,Keepalived会自动将流量转移到备份服务器上,确保服务不中断。

2401_83794506的博客 1981

Keepalived + Nginx实现高可用

IP规划VIPIPnginx端口默认主从80MASTER80BACKUP(1)配置IP(2)修改主机名(3)配置yum源(两台虚拟机相同)2. 安装nginx(1)首先安装依赖(两个节点同步)(2)安装nginx(3)解压nginx压缩包(4)进入nginx目录,编译并安装(两个节点同步)(5)修改nginx首页面IP地址(welcome to nginx改成本机IP,从节点同理,改为192.168.100.202)(6)启动nginx(两个节点同步)

lingqianhui的博客 1924

keepalived+nginx实现web高可用

keepalived+nginx实现web高可用

秋的博客 1537

keepalived+nginx 的高可用集群搭建

Keepalived 软件主要用于实现高可用性(High Availability)和负载均衡功能,它最初是为 Linux 系统设计的,通过管理虚拟 IP 地址(VIP)和健康检查来实现服务的故障转移。

m0_58017289的博客 1358

nginx高可用(利用keepalived抢占模式来实现)

文章目录第1章 整体实践的环境和架构图1.1 实践架构及要的效果1.2 操作系统的基础环境1.3 实践的几个阶段说明 第1章 整体实践的环境和架构图 1.1 实践架构及要的效果 主keepalived正常且nginx服务正常的情况下且node21服务器未宕机的情况下 主keepalived宕服 or nginx宕服 or node21宕机的情况下 node21服务器上nginx宕服后,怎样进行恢复 01:首先“主keepalived”检查到本身监控的服务nginx宕服后,我让其停止自己,“备ke

chenliang 872
上一篇: 安装完nginx启动时,出现了nginx: [emerg] getpwnam("nginx") failed
下一篇: keepalived裂脑检测监本
liuhehe321
博客等级 码龄10年 105粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值