Update haproxy example

dependabot/go_modules/hyperledger_fabric/v2.2.1/chaincodes/go/chaincode_example02/google.golang.org/grpc-1.53.0
Baohua Yang 2023-03-02 15:52:54 -08:00
parent e31af763fd
commit 71fd22f2f9
5 changed files with 117 additions and 98 deletions

View File

@ -2,31 +2,29 @@
# Authors: yeasy.github.com # Authors: yeasy.github.com
# Date: 2015-11-15 # Date: 2015-11-15
weba: version: "3.9"
build: ./web services:
expose: weba:
- 80 build: ./web
expose:
webb: - 80
build: ./web webb:
expose: build: ./web
- 80 expose:
- 80
webc: webc:
build: ./web build: ./web
expose: expose:
- 80 - 80
haproxy:
haproxy: image: haproxy:2.7
image: haproxy:1.6 volumes:
volumes: - ./haproxy:/haproxy-override
- ./haproxy:/haproxy-override - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro links:
links: - weba
- weba - webb
- webb - webc
- webc ports:
ports: - "80:80"
- "80:80" - "70:70" # haproxy admin console, login with user:pass
- "70:70"

View File

@ -1,6 +1,6 @@
global global
log 127.0.0.1 local0 log /dev/log local0
log 127.0.0.1 local1 notice log /dev/log local1 notice
maxconn 4096 maxconn 4096
defaults defaults
@ -8,9 +8,9 @@ defaults
mode http mode http
option httplog option httplog
option dontlognull option dontlognull
timeout connect 5000ms timeout connect 5000
timeout client 50000ms timeout client 50000
timeout server 50000ms timeout server 50000
listen stats listen stats
bind 0.0.0.0:70 bind 0.0.0.0:70
@ -29,10 +29,10 @@ frontend balancer
backend web_backends backend web_backends
mode http mode http
option forwardfor
balance roundrobin balance roundrobin
option forwardfor
#option httpchk GET /
option httpchk HEAD /healthcheck.html HTTP/1.1
server weba weba:80 check server weba weba:80 check
server webb webb:80 check server webb webb:80 check
server webc webc:80 check server webc webc:80 check
option httpchk GET /
http-check expect status 200

View File

@ -1,4 +1,4 @@
FROM python:2.7 FROM python:3.9
WORKDIR /code WORKDIR /code
ADD . /code ADD . /code
EXPOSE 80 EXPOSE 80

View File

@ -0,0 +1,2 @@
Got request from HAProxy.

View File

@ -1,68 +1,87 @@
#!/usr/bin/python #!/usr/bin/python
#authors: yeasy.github.com # authors: yeasy.github.com
#date: 2013-07-05 # date: 2013-07-05
# update: 2023-03-02
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
import socket
import fcntl
import struct
import pickle
from datetime import datetime
from collections import OrderedDict from collections import OrderedDict
from datetime import datetime
import fcntl
from http.server import HTTPServer, SimpleHTTPRequestHandler
import pickle
import socket
import struct
class HandlerClass(SimpleHTTPRequestHandler): class HandlerClass(SimpleHTTPRequestHandler):
def get_ip_address(self,ifname): def get_ip_address(self, ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) """
return socket.inet_ntoa(fcntl.ioctl( Get the IP from the network interface
s.fileno(), """
0x8915, # SIOCGIFADDR with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
struct.pack('256s', ifname[:15]) return socket.inet_ntoa(fcntl.ioctl(
)[20:24]) s.fileno(),
def log_message(self, format, *args): 0x8915, # SIOCGIFADDR
if len(args) < 3 or "200" not in args[1]: struct.pack('256s', ifname[:15].encode())
return )[20:24])
try:
request = pickle.load(open("pickle_data.txt","r")) def log_message(self, format, *args):
except: """
request=OrderedDict() Generate the index.html
time_now = datetime.now() """
ts = time_now.strftime('%Y-%m-%d %H:%M:%S') try:
server = self.get_ip_address('eth0') request = pickle.load(open("pickle_data.txt", "rb"))
host=self.address_string() except:
addr_pair = (host,server) request = OrderedDict()
if addr_pair not in request: if len(args) < 3 or "200" not in args[1]:
request[addr_pair]=[1,ts] return
else:
num = request[addr_pair][0]+1 try:
del request[addr_pair] time_now = datetime.now()
request[addr_pair]=[num,ts] ts = time_now.strftime('%H:%M:%S')
file=open("index.html", "w") host = self.address_string()
file.write("<!DOCTYPE html> <html> <body><center><h1><font color=\"blue\" face=\"Georgia, Arial\" size=8><em>HA</em></font> Webpage Visit Results</h1>"); addr_pair = (host, self.get_ip_address('eth0'))
for pair in request: if addr_pair not in request:
if pair[0] == host: request[addr_pair] = [1, ts]
guest = "LOCAL: "+pair[0] else:
else: num = request[addr_pair][0] + 1
guest = pair[0] del request[addr_pair]
if (time_now-datetime.strptime(request[pair][1],'%Y-%m-%d %H:%M:%S')).seconds < 3: request[addr_pair] = [num, ts]
file.write("<p style=\"font-size:150%\" >#"+ str(request[pair][1]) +": <font color=\"red\">"+str(request[pair][0])+ "</font> requests " + "from &lt<font color=\"blue\">"+guest+"</font>&gt to WebServer &lt<font color=\"blue\">"+pair[1]+"</font>&gt</p>") file = open("index.html", "w")
else: file.write(
file.write("<p style=\"font-size:150%\" >#"+ str(request[pair][1]) +": <font color=\"maroon\">"+str(request[pair][0])+ "</font> requests " + "from &lt<font color=\"navy\">"+guest+"</font>&gt to WebServer &lt<font color=\"navy\">"+pair[1]+"</font>&gt</p>") "<!DOCTYPE html> <html> <body><center><h1><font color=\"blue\" face=\"Georgia, Arial\" size=8><em>HA</em></font> Webpage Visit Results</h1>")
file.write("</center></body> </html>"); for pair in request:
file.close() if pair[0] == host:
pickle.dump(request,open("pickle_data.txt","w")) guest = "LOCAL: " + pair[0]
else:
guest = pair[0]
if (time_now - datetime.strptime(request[pair][1],
'%H:%M:%S')).seconds < 3:
file.write("<p style=\"font-size:150%\" >" + str(
request[pair][1]) + ": <font color=\"red\">" + str(
request[pair][
0]) + "</font> requests " + "from &lt;<font color=\"blue\">" + guest + "</font>>&nbsp;to WebServer &lt;<font color=\"blue\">" +
pair[1] + "</font>>&nbsp;</p>")
else:
file.write("<p style=\"font-size:150%\" >" + str(
request[pair][1]) + ": <font color=\"maroon\">" + str(
request[pair][
0]) + "</font> requests " + "from &lt;<font color=\"navy\">" + guest + "</font>>&nbsp;to WebServer &lt;<font color=\"navy\">" +
pair[1] + "</font>>&nbsp;</p>")
file.write("</center></body> </html>")
file.close()
with open('pickle_data.txt', 'wb') as handle:
pickle.dump(request, handle, protocol=pickle.HIGHEST_PROTOCOL)
except Exception as e:
print("Error:", e)
if __name__ == '__main__': if __name__ == '__main__':
try: try:
ServerClass = BaseHTTPServer.HTTPServer httpd = HTTPServer(('0.0.0.0', 80), HandlerClass)
Protocol = "HTTP/1.0"
addr = len(sys.argv) < 2 and "0.0.0.0" or sys.argv[1] print("serving at port", 80)
port = len(sys.argv) < 3 and 80 or int(sys.argv[2]) httpd.serve_forever()
HandlerClass.protocol_version = Protocol except Exception as e:
httpd = ServerClass((addr, port), HandlerClass) print("Error:", e)
sa = httpd.socket.getsockname() exit(1)
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
except:
exit()