Skip to content

Commit 39304c8

Browse files
committed
Native SSL support instead of stunnel
1 parent 195f088 commit 39304c8

File tree

18 files changed

+124
-213
lines changed

18 files changed

+124
-213
lines changed

README.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PowerGSLB is a simple DNS based Global Server Load Balancing (GSLB) solution.
1010
* [Class diagram](#class-diagram)
1111
* [Web based administration interface](#web-based-administration-interface)
1212
* [Installation on CentOS 7](#installation-on-centos-7)
13-
* [Setup PowerGSLB, PowerDNS and stunnel](#setup-powergslb-powerdns-and-stunnel)
13+
* [Setup PowerGSLB and PowerDNS](#setup-powergslb-and-powerdns)
1414
* [Setup MariaDB](#setup-mariadb)
1515
* [Start services](#start-services)
1616
* [Test PowerGSLB](#test-powergslb)
@@ -26,7 +26,7 @@ PowerGSLB is a simple DNS based Global Server Load Balancing (GSLB) solution.
2626
* Written in Python 2.7
2727
* Built as PowerDNS Authoritative Server [Remote Backend](https://doc.powerdns.com/3/authoritative/backend-remote/)
2828
* Web based administration interface using [w2ui](http://w2ui.com/)
29-
* HTTPS support for the webserver using [stunnel](https://www.stunnel.org/)
29+
* HTTPS support for the web server
3030
* DNS GSLB configuration stored in a MySQL / MariaDB database
3131
* Master-Slave DNS GSLB using native MySQL / MariaDB [replication](https://dev.mysql.com/doc/refman/5.5/en/replication.html)
3232
* Multi-Master DNS GSLB using native MySQL / MariaDB [Galera Cluster](http://galeracluster.com/)
@@ -71,21 +71,20 @@ Add new record
7171

7272
## Installation on CentOS 7
7373

74-
### Setup PowerGSLB, PowerDNS and stunnel
74+
### Setup PowerGSLB and PowerDNS
7575

7676
```shell
77-
yum -y update
7877
yum -y install epel-release
79-
yum -y install python2-pip python2-subprocess32
78+
yum -y update
79+
yum -y install python2-pip
8080

8181
pip install pyping
8282

83-
VERSION=1.6.6
83+
VERSION=1.7.0
8484
yum -y --setopt=tsflags= install \
8585
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-$VERSION-1.el7.noarch.rpm" \
8686
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-admin-$VERSION-1.el7.noarch.rpm" \
87-
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-pdns-$VERSION-1.el7.noarch.rpm" \
88-
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-stunnel-$VERSION-1.el7.noarch.rpm"
87+
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-pdns-$VERSION-1.el7.noarch.rpm"
8988

9089
sed -i 's/^password = .*/password = your-database-password-here/g' /etc/powergslb/powergslb.conf
9190

@@ -106,7 +105,7 @@ systemctl status mariadb.service
106105

107106
mysql_secure_installation
108107

109-
VERSION=1.6.6
108+
VERSION=1.7.0
110109
mysql -p << EOF
111110
CREATE DATABASE powergslb;
112111
GRANT ALL ON powergslb.* TO powergslb@localhost IDENTIFIED BY 'your-database-password-here';
@@ -119,9 +118,9 @@ EOF
119118
### Start services
120119

121120
```shell
122-
systemctl enable powergslb.service pdns.service stunnel@powergslb
123-
systemctl start powergslb.service pdns.service stunnel@powergslb
124-
systemctl status powergslb.service pdns.service stunnel@powergslb
121+
systemctl enable powergslb.service pdns.service
122+
systemctl start powergslb.service pdns.service
123+
systemctl status powergslb.service pdns.service
125124
```
126125

127126
### Test PowerGSLB
@@ -152,17 +151,16 @@ Please read [How to create an RPM package](https://fedoraproject.org/wiki/How_to
152151
yum -y update
153152
yum -y install @Development\ Tools
154153

155-
VERSION=1.6.6
154+
VERSION=1.7.0
156155
curl "https://codeload.github.com/AlekseyChudov/powergslb/tar.gz/$VERSION" > "powergslb-$VERSION.tar.gz"
157156
rpmbuild -tb --define "version $VERSION" "powergslb-$VERSION.tar.gz"
158157
```
159158

160-
Upon successful completion you will have four packages
159+
Upon successful completion you will have three packages
161160
```
162161
~/rpmbuild/RPMS/noarch/powergslb-$VERSION-1.el7.noarch.rpm
163162
~/rpmbuild/RPMS/noarch/powergslb-admin-$VERSION-1.el7.noarch.rpm
164163
~/rpmbuild/RPMS/noarch/powergslb-pdns-$VERSION-1.el7.noarch.rpm
165-
~/rpmbuild/RPMS/noarch/powergslb-stunnel-$VERSION-1.el7.noarch.rpm
166164
```
167165

168166

@@ -171,7 +169,7 @@ Upon successful completion you will have four packages
171169
For quick setup, you can pull all-in-one Docker image from docker.io.
172170

173171
```
174-
VERSION=1.6.6
172+
VERSION=1.7.0
175173
176174
docker pull docker.io/alekseychudov/powergslb:"$VERSION"
177175
@@ -195,7 +193,7 @@ semanage boolean --modify --on container_manage_cgroup
195193
To create an all-in-one Docker image.
196194

197195
```
198-
VERSION=1.6.6
196+
VERSION=1.7.0
199197
200198
docker build -f docker/Dockerfile --build-arg VERSION="$VERSION" \
201199
--force-rm --no-cache -t powergslb:"$VERSION" https://github.com/AlekseyChudov/powergslb.git

docker/Dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
FROM docker.io/centos:7.6.1810
2-
ARG VERSION
3-
COPY docker/rootfs /
4-
RUN /build
52
ENV container docker
63
CMD ["/usr/lib/systemd/systemd"]
74
STOPSIGNAL SIGRTMIN+3
5+
6+
ARG TZ=UTC
7+
ARG VERSION
8+
9+
COPY docker/rootfs /
10+
RUN /docker.build

docker/rootfs/build

Lines changed: 0 additions & 11 deletions
This file was deleted.

docker/rootfs/build.d/00-update.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

docker/rootfs/build.d/10-localtime.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

docker/rootfs/build.d/20-packages.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

docker/rootfs/build.d/60-powergslb.sh

Lines changed: 0 additions & 48 deletions
This file was deleted.

docker/rootfs/build.d/90-systemd.sh

Lines changed: 0 additions & 13 deletions
This file was deleted.

docker/rootfs/build.d/99-clean.sh

Lines changed: 0 additions & 7 deletions
This file was deleted.

docker/rootfs/docker.build

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
MYSQL_USER_PASSWORD="$(</dev/urandom tr -dc '[:alnum:]' | head -c32)"
6+
MYSQL_ROOT_PASSWORD="$(</dev/urandom tr -dc '[:alnum:]' | head -c32)"
7+
8+
ln -sfv "/usr/share/zoneinfo/$TZ" /etc/localtime
9+
10+
yum -y install epel-release
11+
yum -y update
12+
yum -y install bind-utils iproute less mariadb-server net-tools python2-pip
13+
14+
pip install pyping
15+
16+
yum -y --setopt=tsflags="" install \
17+
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-$VERSION-1.el7.noarch.rpm" \
18+
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-admin-$VERSION-1.el7.noarch.rpm" \
19+
"https://github.com/AlekseyChudov/powergslb/releases/download/$VERSION/powergslb-pdns-$VERSION-1.el7.noarch.rpm"
20+
21+
sed -i "s/^password = .*/password = $MYSQL_USER_PASSWORD/g" /etc/powergslb/powergslb.conf
22+
23+
cp -v /etc/pdns/pdns.conf /etc/pdns/pdns.conf~
24+
cp -v "/usr/share/doc/powergslb-pdns-$VERSION/pdns/pdns.conf" /etc/pdns/pdns.conf
25+
26+
sed -i '/\[mysqld\]/a bind-address=127.0.0.1\ncharacter_set_server=utf8' /etc/my.cnf.d/server.cnf
27+
28+
su -s /bin/bash mysql /usr/libexec/mariadb-prepare-db-dir
29+
30+
mysqld_safe --basedir=/usr &
31+
/usr/libexec/mariadb-wait-ready $$
32+
33+
mysql << EOF
34+
CREATE DATABASE powergslb;
35+
GRANT ALL ON powergslb.* TO powergslb@localhost IDENTIFIED BY '$MYSQL_USER_PASSWORD';
36+
USE powergslb;
37+
source /usr/share/doc/powergslb-$VERSION/database/scheme.sql
38+
source /usr/share/doc/powergslb-$VERSION/database/data.sql
39+
EOF
40+
41+
mysqladmin -u root password "$MYSQL_ROOT_PASSWORD"
42+
43+
cat << EOF > /root/.my.cnf
44+
[client]
45+
user=root
46+
password=$MYSQL_ROOT_PASSWORD
47+
EOF
48+
49+
pkill -f /usr/libexec/mysqld
50+
51+
rm -frv /etc/systemd/system/*.wants /usr/lib/systemd/system/*.wants/*
52+
ln -rsvt /usr/lib/systemd/system/sockets.target.wants /usr/lib/systemd/system/dbus.socket
53+
ln -rsvt /usr/lib/systemd/system/sockets.target.wants /usr/lib/systemd/system/systemd-journald.socket
54+
ln -rsvt /usr/lib/systemd/system/sockets.target.wants /usr/lib/systemd/system/systemd-shutdownd.socket
55+
ln -rsvt /usr/lib/systemd/system/sysinit.target.wants /usr/lib/systemd/system/systemd-tmpfiles-setup.service
56+
ln -rsvt /usr/lib/systemd/system/timers.target.wants /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
57+
mkdir -pv /etc/systemd/system/multi-user.target.wants
58+
ln -sv /usr/lib/systemd/system/mariadb.service /etc/systemd/system/multi-user.target.wants/mariadb.service
59+
ln -sv /usr/lib/systemd/system/pdns.service /etc/systemd/system/multi-user.target.wants/pdns.service
60+
ln -sv /usr/lib/systemd/system/powergslb.service /etc/systemd/system/multi-user.target.wants/powergslb.service
61+
62+
yum clean all
63+
rm -frv /anaconda-post.log /root/anaconda-ks.cfg /tmp/* /var/cache/yum /var/log/* /var/tmp/*
64+
find /etc -name "*-" -o -name "*.bak" -o -name "*.rpmnew" -o -name "*.rpmsave" | xargs rm -fv
65+
66+
rm -fv "$0"

0 commit comments

Comments
 (0)