A high availability (HA) architecture using Keepalived and Nginx

Here’s an example configuration for setting up a high availability (HA) architecture using Keepalived and Nginx: Install Keepalived and Nginx on each server. Configure Keepalived on both servers: Edit the Keepalived configuration file (e.g., /etc/keepalived/keepalived.conf) on each server. Specify the virtual IP (VIP) address that will be used for HA. For example, set virtual_ipaddress to “192.168.0.100”. Configure […]

Docker Dockerfile

什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 使用 Dockerfile 定制镜像 这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。 1、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件) 在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容: FROM nginx RUN echo ‘这是一个本地构建的nginx镜像’ > /usr/share/nginx/html/index.html 2、FROM 和 RUN 指令的作用 FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。 RUN:用于执行后面跟着的命令行命令。有以下俩种格式: shell 格式: RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。 exec 格式: RUN [“可执行文件”, “参数1”, “参数2”] # 例如: […]

OpenWRT下安装和配置shadowsocks

本文主要记录在openWRT下安装和配置shadowsocks的简要过程,便于日后查找和备忘。成功安装后可以实现透明代理,分流和防DNS污染。 Environment 路由器型号:YouHua WR1200JS 固件版本:OpenWrt 19.07.4 r11208-ce6496d796 / LuCI openwrt-19.07 branch git-21.054.03371-3b137b5 拓扑图+工作原理 dnsmasq是openwrt自带的一个软件,提供dns缓存,dhcp等功能。dnsmasq会将dns查询数据包转发给chinadns。 chinadns的上游DNS服务器有两个,一个是国内DNS,一个是可信DNS(国外DNS)。 chinadns会同时向上游的DNS发送请求 如果可信DNS先返回, 则直接采用可信DNS的结果 如果国内DNS先返回, 分两种情况: 如果返回的结果是国内IP,则采用;否则丢弃并等待采用可信DNS的结果 3.dns-forwarder 支持DNS TCP查询, 如果ISP的UDP不稳定, 丢包严重,可以使用dns-forwarder来代替ss-tunnel来进行DNS查询. 4.shadowsocks 用于转发数据包, 科学上网. 关于shadowsocks的科普文章可查看这里: https://www.css3er.com/p/107.html 相关的ipk软件包下载地址 ipk软件包集合, 不同的CPU架构需要使用不同的软件包, CPU架构是mipsel_24kc的话, 可以集中从这里下载. 链接: https://pan.baidu.com/s/14QDoTLqw-SEBZvQVQeVgvA 提取码: ugsc 其它的CPU架构, 可以去GitHub主页 -> Releases下载别人已经编译好的软件包, 如果没有, 只能自己下载openWRT的SDK, 自己进行编译. shadowsocks-libev_3.3.5-1_mipsel_24kc.ipk shadowsocks-libev-server_3.3.5-1_mipsel_24kc.ipk ChinaDNS_1.3.3-1_mipsel_24kc.ipk dns-forwarder_1.2.1-2_mipsel_24kc.ipk luci-compat luci-app-shadowsocks-without-ipset_1.9.1-1_all.ipk luci-app-chinadns_1.6.2-1_all.ipk luci-app-dns-forwarder_1.6.2-1_all.ipk 链接: https://pan.baidu.com/s/14QDoTLqw-SEBZvQVQeVgvA 提取码: ugsc openwrt-shadowsocks […]

penWRT 结合 tinc 组自己的 SDLAN(Step by Step)

本文主要实现在OpenWRT路由器以及不同系统下通过tinc switch mode搭建SDLAN内网服务器方便远程连接, Switch Mode相对来说配置比较简单,各节点均在同一广播域内,方便调控,tinc节点本身通过DNAT+SNAT可以实现对不同网间端口的调通, 同时Switch Mode中各节点的hosts文件只需保证在公网地址的节点中全部拥有维护即可,其他节点只需维护本节点以及公网节点的hosts文件 下面主要分三步: (1)公网节点的部署(Master节点) (2)其他节点的部署(Slave节点) (3)节点的NAT配置 本次搭建的拓扑以下为例,两个Master节点,若干个Slave节点(以3个不同操作系统的为例) (0)tinc的安装 各大Linux发行版基本都可以通过包管理对tinc进行安装 sudo yum install tinc sudo apt install tinc OpenWRT也可通过opkg安装tinc opkg update opkg install tinc Windows可在官网下载 https://www.tinc-vpn.org/packages/windows/tinc-1.1pre17-install.exe​www.tinc-vpn.org/packages/windows/tinc-1.1pre17-install.exe Windows中自带的TAP-Windwos版本比较低,建议可以考虑另外安装版本较新的TAP-Windows新建虚拟网卡而不是用tinc-vpn安装包中自带的TAP-Windows (1)公网节点的部署(Master节点) 需要预先定义定义一个网络名 本次以tincnet为例NETNAME = tincnet 每个节点均需要以以下目录结构创建好配置文件夹 /etc/tinc/tincnet % ls -la total 24 drwxr-xr-x 3 root root 4096 Mar 4 15:07 . drwxr-xr-x 4 root […]

Docker OpenWrt Builder

Docker OpenWrt Builder Build OpenWrt images in a Docker container. This is sometimes necessary when building OpenWrt on the host system fails, e.g. when some dependency is too new. The docker image is based on Debian 10 (Buster). Build tested: OpenWrt-21.02.2 OpenWrt-19.07.8 OpenWrt-18.06.9 A smaller container based on Alpine Linux is available in the alpine branch. But […]

ubuntu 下使用openconnect 连接vpn

使用openconnect在ubuntu 中安装openconnect,可以在软件中心找到.   在/etc/vpc/目录下新建vpnc-script 文件 文件内容可以到此处拷贝 http://git.infradead.org/users/dwmw2/vpnc-scripts.git/blob_plain/HEAD:/vpnc-script   sudo openconnect -u 用户名 –script=/etc/vpnc/vpnc-script –no-dtls vpn.test.com   输入密码后提示 POST https://vpn.test.com/+webvpn+/index.html Got CONNECT response: HTTP/1.1 200 OK CSTP connected. DPD 30, Keepalive 20 Connected tun0 as 10.22.22.22, using SSL   连接成功!!!

Golang指南:顶级Golang框架、IDE和工具列表

译文链接:http://www.codeceo.com/article/golang-framework-ide-tools.html 英文原文:Golang Guide: A List of Top Golang Frameworks, IDEs, and Tools 自推出以来,Google的Go编程语言(Golang)越来越受主流用户的欢迎。在2016年12月的一份调研中,3,595名受访者中有89%表明他们在工作中或工作以外用Go语言编程。 此外,在编程语言中,Go语言在专业知识和偏好方面排名最高。2017年7月,在Tiobe的年度编程语言排名中,Go语言从去年的第55名一跃跳到了第10名。 显然,Go语言吸引了来自不同学科的许多程序员和软件开发外包专业人士。可以这么说,这全都是因为Go语言的易用性。 作为一种编译型的开源编程语言,Go语言能使开发人员轻松构建简单可靠又高效的软件。它是更保守的语言,如C和C ++的创新和演变的产物。 使用Go语言,可以减少代码输入量,并且编写稳健的API而不牺牲性能变得更加容易。 Go语言旨在实现可扩展性和并发性,从而实现优化。编译器可以在运行时前执行所有代码检查工作。 我们收罗了Golang的顶级框架、IDE和工具列表,以供大家快速参考。建议添加到浏览器书签中,以便随时查看! Golang框架 Web框架可以帮助开发人员尽可能方便快捷地构建应用程序。Go语言还比较新,所以使用的框架带有充足的文档很重要。 这里有9个框架可帮助你使用Go语言构建项目。 1.Revel 作为Go语言的高效生产力框架,Revel包含的Hot Code Reload工具可以让你在每次更改文件时重建项目。它还包括各种全面和高性能的功能,因此你不需要找外部库集成到框架中。 2.Beego Beego是一个完整的MVC框架,有自己的日志库、ORM和Web框架。你不需要再去安装第三方库。它有一个称为Bee Tool的内置工具,用于监视代码更改,并在检测到更改时运行任务。 Beego可以为你节省很多时间,特别是在项目一开始,你要弄清楚日志框架或应用程序结构的时候。 3.Martini 受Sinatra启发,Martini是一个极其轻巧但功能强大的框架。它被开发用于用Golang编写模块化Web应用程序和服务。 它的特点是非侵入式设计,快速易用,且包括各种处理程序和中间件。它能够为HTML5模式的AngularJS应用程序执行基本路由,异常处理和默认文档服务。 Martini的最佳功能是可以使用反射,它允许开发人员动态地将数据插入到处理函数中并添加新的服务。Martini也完全兼容http.HandlerFunc界面。不过,缺点在于Martini框架不再维护了。 4.Gin Gonic Gin Gonic是一个Web框架,有类似Martini的API,但性能更好。如果你以前使用过Martini,那么你也一定熟悉Gin Gonic。没用过Martini也没关系,只需要学习10分钟就能掌握Gin。就是这么容易! Gin Gonic是一个极简化的框架,仅包含最重要的库和功能。这使得它非常适合开发高性能REST API。此外,它比Martini快四十倍。 你可以添加中间件、嵌套组、JSON验证以及渲染,并依然保持其最佳性能。Gin Gonic使用httprouter,Go语言最快的HTTP路由器。 5.Buffalo 要构建Go语言新的Web应用程序,使用Buffalo是一个快速又简单的方法。当你开始一个新项目时,Buffalo可以为你提供一切——从前端到后端开发。 它具有热重载功能,这意味着dev命令将自动查看.go和.html文件。然后,它将为你重建并重启二进制文件。运行dev命令,你就能看到变化在你的眼前发生! Buffalo不仅仅是一个框架——它也是一个整体的Web开发生态系统,可以让你直接构建应用程序。 6.Goji Goji是一个轻量级的快速Web框架,将可组合性和简单性作为其主要优先级。很像net / http.ServeMux,Goji是一个极简的HTTP请求复用器。它包括Einhorn支持,允许在Goji中提供Websocket支持。 其他功能包括URL模式,可重新配置的中间件堆栈,正常关机等。Goji可以用于生产,并在若干组织中提供了数以亿计个请求。 7.Tiger […]

nmcli网络配置命令

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全,也可在命令最后通过-h、–help、help查看帮助。在nmcli中有2个命令最为常用: nmcli语法: nmcli [ OPTIONS ] OBJECT { COMMAND | help } OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,还有其他的选项在里暂时不介绍,这里需要简单区分一下connection和device 详细的介绍请看这篇文章:RHEL/CentOS系列发行版nmcli命令概述 这里主要介绍命令的使用 1、查看网络接口信息 ————————————————————– nmcli          ##查看ip(类似于ifconfig、ip addr) nmcli device status      ##所有接口的简略信息 nmcli device show       ##所有接口的详细信息 nmcli device show interface-name     ##特定接口的详细信息 ————————————————————– 2、查看连接信息 ————————————————————– nmcli connection show         ##所有连接的简略信息 nmcli connection show –active      ##显示激活的连接 nmcli connection show inteface-name   ##某个接口的详细连接信息 ————————————————————– 3、激活连接与取消激活链接 ————————————————————– #激活连接 nmcli connection […]

How to Setup VyprVPN on the Raspberry Pi

In this tutorial, I will be going through all the steps to setting up Raspberry Pi VyprVPN. This tutorial is handy if you’re looking to connect your Pi to the VyprVPN service. There are many reasons why you may want to set up a VPN on the Raspberry Pi. The most common is that you want […]

Top 10 Python Libraries You Must Know in 2019

In this article, we will discuss some of the top libraries in Python that can be used by developers to prase, clean, and represent data and implement machine learning in their existing applications. We will be considering the following 10 libraries: TensorFlow Scikit-Learn Numpy Keras PyTorch LightGBM Eli5 SciPy Theano Pandas Introduction Python is one […]